@@ -985,3 +985,119 @@ QtObject:
985
985
except ValueError :
986
986
error " parse lastTokensUpdate: " , lastTokensUpdate
987
987
return self.settings.lastTokensUpdate
988
+
989
+ # ## News Feed Settings ###
990
+ proc notifSettingStatusNewsChanged * (self: Service ) {.signal .}
991
+
992
+ proc toggleNewsFeedEnabled * (self: Service , value: bool ): bool =
993
+ try :
994
+ let response = status_settings.toggleNewsFeedEnabled (value)
995
+ if not response.error.isNil:
996
+ raise newException (RpcException , response.error.message)
997
+
998
+ self.settings.newsFeedEnabled = value
999
+ self.notifSettingStatusNewsChanged ()
1000
+ return true
1001
+ except Exception as e:
1002
+ error " error: " , procName= " toggleNewsFeedEnabled" , errName = e.name, errDesription = e.msg
1003
+ return false
1004
+
1005
+ proc getNotifSettingStatusNews * (self: Service ): string {.slot .} =
1006
+ result = VALUE_NOTIF_SEND_ALERTS # Default value
1007
+
1008
+ var newsFeedEnabled = false
1009
+ var newsNotificationsEnabled = false
1010
+
1011
+ if self.initialized:
1012
+ newsFeedEnabled = self.settings.newsFeedEnabled
1013
+ newsNotificationsEnabled = self.settings.newsNotificationsEnabled
1014
+ else :
1015
+ try :
1016
+ var response = status_settings.newsFeedEnabled ()
1017
+ if not response.error.isNil:
1018
+ error " error reading news feed enabled setting: " , errDescription = response.error.message
1019
+ return
1020
+ newsFeedEnabled = response.result .getBool
1021
+
1022
+ response = status_settings.newsNotificationsEnabled ()
1023
+ if not response.error.isNil:
1024
+ error " error reading news notifications enabled setting: " , errDescription = response.error.message
1025
+ return
1026
+ newsNotificationsEnabled = response.result .getBool
1027
+ except Exception as e:
1028
+ let errDesription = e.msg
1029
+ error " reading news settings error: " , errDesription
1030
+ return
1031
+
1032
+ # We convert the bools to the right setting
1033
+ # Send alerts means the News Feed is enabled + notifications are enabled
1034
+ # Deliver quietly means the News Feed is enabled + notifications are disabled
1035
+ # Turn off means the News Feed is disabled
1036
+ if not newsFeedEnabled:
1037
+ return VALUE_NOTIF_TURN_OFF
1038
+ if not newsNotificationsEnabled:
1039
+ return VALUE_NOTIF_DELIVER_QUIETLY
1040
+ return VALUE_NOTIF_SEND_ALERTS
1041
+
1042
+ proc setNotifSettingStatusNews * (self: Service , value: string ) {.slot .} =
1043
+ var newsFeedEnabled = false
1044
+ var newsNotificationsEnabled = false
1045
+ # We need to convert the string value to the right setting to turn off
1046
+ case value
1047
+ of VALUE_NOTIF_SEND_ALERTS :
1048
+ # Send alerts means the News Feed is enabled + notifications are enabled
1049
+ newsFeedEnabled = true
1050
+ newsNotificationsEnabled = true
1051
+ of VALUE_NOTIF_TURN_OFF :
1052
+ # Turn off means the News Feed is disabled + notifications are disabled
1053
+ newsFeedEnabled = false
1054
+ newsNotificationsEnabled = false
1055
+ of VALUE_NOTIF_DELIVER_QUIETLY :
1056
+ # Deliver quietly means the News Feed is enabled + notifications are disabled
1057
+ newsFeedEnabled = true
1058
+ newsNotificationsEnabled = false
1059
+ else :
1060
+ error " error: " , procName= " setNotifSettingStatusNews" , errDescription = " Unknown value: " , value
1061
+ return
1062
+
1063
+ if not self.saveSetting (KEY_NEWS_NOTIFICATIONS_ENABLED , newsNotificationsEnabled):
1064
+ return
1065
+ self.settings.newsNotificationsEnabled = newsNotificationsEnabled
1066
+
1067
+ # toggleNewsFeedEnabled changes the value and calls the signals
1068
+ discard self.toggleNewsFeedEnabled (newsFeedEnabled)
1069
+ QtProperty [string ] notifSettingStatusNews:
1070
+ read = getNotifSettingStatusNews
1071
+ write = setNotifSettingStatusNews
1072
+ notify = notifSettingStatusNewsChanged
1073
+
1074
+ proc newsRSSEnabledChanged * (self: Service ) {.signal .}
1075
+ proc getNewsRSSEnabled * (self: Service ): bool {.slot .} =
1076
+ if self.initialized:
1077
+ return self.settings.newsRSSEnabled
1078
+
1079
+ result = true # default value
1080
+ try :
1081
+ let response = status_settings.newsRSSEnabled ()
1082
+ if (not response.error.isNil):
1083
+ raise newException (RpcException , response.error.message)
1084
+ result = response.result .getBool
1085
+ except Exception as e:
1086
+ let errDesription = e.msg
1087
+ error " reading news RSS setting error: " , errDesription
1088
+
1089
+ proc setNewsRSSEnabled * (self: Service , value: bool ) {.slot .} =
1090
+ try :
1091
+ let response = status_settings.toggleNewsRSSEnabled (value)
1092
+ if not response.error.isNil:
1093
+ raise newException (RpcException , response.error.message)
1094
+
1095
+ self.settings.newsRSSEnabled = value
1096
+ self.newsRSSEnabledChanged ()
1097
+ except Exception as e:
1098
+ error " error: " , procName= " toggleNewsRSSEnabled" , errName = e.name, errDesription = e.msg
1099
+
1100
+ QtProperty [bool ] newsRSSEnabled:
1101
+ read = getNewsRSSEnabled
1102
+ write = setNewsRSSEnabled
1103
+ notify = newsRSSEnabledChanged
0 commit comments