diff --git a/data/prefs_db.sqlite b/data/prefs_db.sqlite new file mode 100644 index 0000000..a45d9ba Binary files /dev/null and b/data/prefs_db.sqlite differ diff --git a/domain/assetmanager.py b/domain/assetmanager.py index 0b9fd9d..3f7b255 100644 --- a/domain/assetmanager.py +++ b/domain/assetmanager.py @@ -7,6 +7,8 @@ config_name, layout_dir, drawable_dir, assets_dir = "firebase-config.json", "layout", "drawable", "assets" +db_dir = "data" + def get_layout_path(filename: str) -> str: if not filename.endswith(".ui"): @@ -22,6 +24,10 @@ def get_assets_path(filename: str) -> str: return path.dirname(__file__)[:-6:] + assets_dir + "\\" + filename +def get_database_path(filename: str) -> str: + return path.dirname(__file__)[:-6:] + db_dir + "\\" + filename + + def get_config() -> str: src = get_assets_path(config_name) with open(src, 'r') as config_file: diff --git a/model/dao/SettingsDao.py b/model/dao/SettingsDao.py index c2e8de5..5644f6c 100644 --- a/model/dao/SettingsDao.py +++ b/model/dao/SettingsDao.py @@ -1,5 +1,8 @@ +import sqlite3 + from pyrebase.pyrebase import Firebase +from domain.assetmanager import get_database_path from model.ThemeEnum import Theme from model.User import User @@ -7,22 +10,32 @@ class SettingsDao: get_theme_dict = { - "light": Theme.LIGHT, - "dark": Theme.DARK + "dark": Theme.DARK, + "light": Theme.LIGHT } put_theme_dict = { - Theme.LIGHT: "light", - Theme.DARK: "dark" + Theme.LIGHT: 1, + Theme.DARK: 0 } + db_path = get_database_path("prefs_db.sqlite") + connection = sqlite3.connect(db_path) + cursor = connection.cursor() + def __init__(self, firebase: Firebase): - self.__db = firebase.database() + pass def save_theme(self, user: User, theme: Theme): - data = self.put_theme_dict.get(theme, "dark") - self.__db.child("users").child(user.id).child("settings").child("def_theme").set(data) + theme_id = self.put_theme_dict.get(theme, 0) + self.cursor.execute(f"UPDATE prefs SET mode_id = {theme_id} WHERE id = 1").fetchall() + self.connection.commit() def get_current_theme(self, user: User): - data = self.__db.child("users").child(user.id).child("settings").child("def_theme").get().val() - return self.get_theme_dict.get(data, Theme.DARK) + cmd = "SELECT modes.name FROM prefs INNER JOIN modes ON prefs.mode_id == modes.id" + res = self.cursor.execute(cmd).fetchall() + return self.get_theme_dict.get(res[0][0], Theme.DARK) + + def close(self): + self.cursor.close() + self.connection.close() diff --git a/view/widgets/viewmodel/ChatViewModel.py b/view/widgets/viewmodel/ChatViewModel.py index 6e5f7a6..eb23326 100644 --- a/view/widgets/viewmodel/ChatViewModel.py +++ b/view/widgets/viewmodel/ChatViewModel.py @@ -143,3 +143,4 @@ def get_current_user(self): def stop_updating(self): self.active = False + self.settings_dao.close()