discord login panel reworked for backend changes

This commit is contained in:
Adam Saudagar 2020-10-30 03:34:43 +05:30
parent 84f6b25f4f
commit 7e00771887
5 changed files with 58 additions and 14 deletions

View File

@ -61,7 +61,7 @@ def start_semifisher_config(gui: 'GUI'):
gui._notify_check = Checkbutton(controls_frame, command=toggle_sub, variable=gui._notify)
gui._notify_check.grid(row=0, column=1)
gui._notify_check['state'] = DISABLED
is_subbed = web.is_subbed(config.get('uid'), lazy=False)
is_subbed = web.is_subbed(config.get('uid'))
if is_subbed[1]:
gui._notify_check['state'] = NORMAL
gui._notify.set(is_subbed[0])

View File

@ -3,9 +3,10 @@ from tkinter import *
from tkinter import messagebox
from tkinter.ttk import *
from fishy import web
import typing
from fishy.web import web
from fishy.libs.tkhtmlview import HTMLLabel
from ..helper.config import config
@ -15,25 +16,26 @@ if typing.TYPE_CHECKING:
# noinspection PyProtectedMember
def discord_login(gui: 'GUI'):
if web.is_subbed(config.get("uid"))[0]:
web.unsub(config.get("uid"))
if web.is_logged_in(config.get("uid")):
if web.logout(config.get("uid")):
gui.login.set(0)
return
# set notification checkbutton
gui._notify.set(0)
gui.login.set(0)
def quit_top():
top.destroy()
top_running[0] = False
def check():
if web.sub(config.get("uid"), discord_name.get()):
if web.is_subbed(config.get("uid"), False)[0]:
gui._notify.set(1)
messagebox.showinfo("Note!", "Notification configured successfully!")
quit_top()
code = int(login_code.get()) if login_code.get().isdigit() else 0
if web.login(config.get("uid"), code):
gui.login.set(1)
messagebox.showinfo("Note!", "Logged in successfuly!")
quit_top()
else:
messagebox.showerror("Error", "Subscription wasn't successful")
messagebox.showerror("Error", "Logged wasn't successful")
top_running = [True]
@ -54,8 +56,8 @@ def discord_login(gui: 'GUI'):
html_label.pack(pady=(20, 5))
html_label.fit_height()
discord_name = Entry(top, justify=CENTER, font="Calibri 15")
discord_name.pack(padx=(15, 15), expand=True, fill=BOTH)
login_code = Entry(top, justify=CENTER, font="Calibri 15")
login_code.pack(padx=(15, 15), expand=True, fill=BOTH)
html_label = HTMLLabel(top,
html=f'<div style="color: {gui._console["fg"]}; text-align: center">'

View File

@ -3,6 +3,7 @@ import time
from tkinter import *
from tkinter.ttk import *
from fishy.web import web
from ttkthemes import ThemedTk
from fishy import helper
@ -39,7 +40,11 @@ def _create(gui: 'GUI'):
filemenu = Menu(menubar, tearoff=0)
filemenu.add_checkbutton(label="Login", command=lambda: discord_login(gui), variable=gui.login)
login = web.is_logged_in(config.get('uid'))
gui.login = IntVar()
gui.login.set(1 if login > 0 else 0)
state = DISABLED if login == -1 else ACTIVE
filemenu.add_checkbutton(label="Login", command=lambda: discord_login(gui), variable=gui.login, state=state)
filemenu.add_command(label="Create Shortcut", command=lambda: helper.create_shortcut(False))
# filemenu.add_command(label="Create Anti-Ghost Shortcut", command=lambda: helper.create_shortcut(True))

View File

@ -13,6 +13,7 @@ subscription = domain + "/api/notify_semifish"
hole_depleted = domain + "/api/hole_depleted"
session = domain + "/api/session"
terms = domain + "/terms.html"
discord = domain + "/api/discord"
def get_notification_page(uid):

View File

@ -10,6 +10,38 @@ from ..helper.config import config
_session_id = None
@fallback(-1)
def is_logged_in(uid):
if uid is None:
return -1
body = {"uid": uid}
response = requests.get(urls.discord, params=body)
logged_in = response.json()["discord_login"]
return 1 if logged_in else 0
@fallback(False)
def login(uid, login_code):
body = {
"uid": uid,
"login_code": login_code
}
reponse = requests.post(urls.discord, json=body)
result = reponse.json()
return result["success"]
@fallback(False)
def logout(uid):
body = {
"uid": uid,
}
reponse = requests.delete(urls.discord, json=body)
result = reponse.json()
return result["success"]
@fallback(False)
def register_user(uid):
ip = get_ip(GoogleDnsProvider)
@ -62,6 +94,10 @@ def is_subbed(uid):
body = {"uid": uid}
response = requests.get(urls.subscription, params=body)
if response.status_code != 200:
return False, False
is_subbed = response.json()["subbed"]
return is_subbed, True