Make unread channels persist across sessions

This commit is contained in:
Fierelier 2020-11-26 03:19:25 +01:00
parent 4ee23bdff7
commit 1fd0c6966f
1 changed files with 16 additions and 7 deletions

View File

@ -72,7 +72,7 @@ def getChannelDisplayName(channel):
else:
channelName = "Group: [No name]"
if channel in unreadChannels:
if channel.id in unreadChannels:
channelName = "* " +channelName
return channelName
@ -113,15 +113,15 @@ class dbfApp:
index += 1
if activeWindow.type == "channel":
if activeWindow.channel in unreadChannels:
if activeWindow.channel.id in unreadChannels:
if activeWindow.messageLog.scrollbar.value() == activeWindow.messageLog.scrollbar.maximum():
del unreadChannels[unreadChannels.index(activeWindow.channel)]
del unreadChannels[unreadChannels.index(activeWindow.channel.id)]
index = 0
while index < length:
gui = openGuis[index]
if gui.type == "channel":
if gui.channel in unreadChannels:
if gui.channel.id in unreadChannels:
if gui.read == False: index += 1; continue
gui.title = getChannelDisplayName(gui.channel)
gui.window.setWindowTitle(getTitle(gui.title))
@ -139,6 +139,9 @@ class dbfApp:
if gui.type == "channels":
gui.repopulateChannels("conversations")
oldUnreadChannels = unreadChannels.copy()
fh = open(p(loginPath,"unreadChannels.json"),"w")
fh.write(json.dumps(unreadChannels))
fh.close()
conditions = []
length = len(guiTasks)
@ -592,7 +595,7 @@ class guiChannel:
self.window.resize(self.width,self.height)
self.channel = channel
self.read = (not channel in unreadChannels)
self.read = (not channel.id in unreadChannels)
self.messages = []
self.pendingMessages = []
@ -730,7 +733,7 @@ def discordClient(token):
fetchMsgs = False
guiLock.acquire()
if not channel in unreadChannels: unreadChannels.append(channel)
if not channel.id in unreadChannels: unreadChannels.append(channel.id)
for gui in openGuis:
if gui.type == "channel":
if channel != gui.channel: continue
@ -835,7 +838,7 @@ def discordClient(token):
if type(message.channel) in channelFilter:
addGuiTask(None,playNotificationSound,(),{})
if not message.channel in unreadChannels: unreadChannels.append(message.channel)
if not message.channel.id in unreadChannels: unreadChannels.append(message.channel.id)
for gui in openGuis:
if gui.type == "channels":
@ -906,6 +909,12 @@ def init(nlogin):
with open(p(loginPath,"token")) as tokenFile:
token = tokenFile.read()
if os.path.isfile(p(loginPath,"unreadChannels.json")):
global unreadChannels
fh = open(p(loginPath,"unreadChannels.json"))
unreadChannels = json.loads(fh.read())
fh.close()
guiLock.acquire()
for gui in openGuis:
if gui.type == "loginProgress":