Skip to content

Commit

Permalink
🔧 Migrated preference storage to local sqlite3 database
Browse files Browse the repository at this point in the history
  • Loading branch information
AlbatovK committed Oct 22, 2022
1 parent 2804484 commit 0c85dce
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 9 deletions.
Binary file added data/prefs_db.sqlite
Binary file not shown.
6 changes: 6 additions & 0 deletions domain/assetmanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"):
Expand All @@ -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:
Expand Down
31 changes: 22 additions & 9 deletions model/dao/SettingsDao.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,41 @@
import sqlite3

from pyrebase.pyrebase import Firebase

from domain.assetmanager import get_database_path
from model.ThemeEnum import Theme
from model.User import User


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()
1 change: 1 addition & 0 deletions view/widgets/viewmodel/ChatViewModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,3 +143,4 @@ def get_current_user(self):

def stop_updating(self):
self.active = False
self.settings_dao.close()

0 comments on commit 0c85dce

Please sign in to comment.