Fix : Server Icon doesnt load on reconnect

This commit is contained in:
Shaik-Sirajuddin 2024-03-08 12:27:23 +05:30
parent 54f2cea4e9
commit adb169460e
7 changed files with 43 additions and 24 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -27,4 +27,4 @@ export interface ISettingsIcon {
enterprise: boolean;
}
export type TSettingsModel = ISettings & Model;
export type TSettingsModel = (ISettings | ISettingsIcon) & Model;

View File

@ -169,7 +169,7 @@ export const defaultSettings = {
type: 'valueAsBoolean'
},
Assets_favicon_512: {
type: null
type: 'value'
},
Message_Read_Receipt_Enabled: {
type: 'valueAsBoolean'

View File

@ -128,14 +128,27 @@ export async function setSettings(): Promise<void> {
const db = database.active;
const settingsCollection = db.get('settings');
const settingsRecords = await settingsCollection.query().fetch();
const parsed = Object.values(settingsRecords).map(item => ({
_id: item.id,
valueAsString: item.valueAsString,
valueAsBoolean: item.valueAsBoolean,
valueAsNumber: item.valueAsNumber,
valueAsArray: item.valueAsArray,
_updatedAt: item._updatedAt
}));
const parsed = Object.values(settingsRecords).map(item => {
// All settings except 'Assets_favicon_512' are of type ISettings & Model
// 'valueAsString' property check is used in order to avoid eslint error
if (item.id !== 'Assets_favicon_512' && 'valueAsString' in item) {
return {
_id: item.id,
valueAsString: item.valueAsString,
valueAsBoolean: item.valueAsBoolean,
valueAsNumber: item.valueAsNumber,
valueAsArray: item.valueAsArray,
_updatedAt: item._updatedAt
};
}
return {
_id: item.id,
// @ts-ignore
value: item.value,
// @ts-ignore
enterprise: item.enterprise
};
});
reduxStore.dispatch(addSettings(parseSettings(parsed.slice(0, parsed.length))));
}

View File

@ -53,11 +53,17 @@ export async function shareExtensionInit(server: string) {
const settingsCollection = db.get('settings');
const settingsRecords = await settingsCollection.query(Q.where('id', Q.oneOf(settings))).fetch();
const parsed = Object.values(settingsRecords).map(item => ({
// it is guranteed the properties will exist as the settings list doesnt contain Assets_favicon_512
_id: item.id,
// @ts-ignore
valueAsString: item.valueAsString,
// @ts-ignore
valueAsBoolean: item.valueAsBoolean,
// @ts-ignore
valueAsNumber: item.valueAsNumber,
// @ts-ignore
valueAsArray: item.valueAsArray,
// @ts-ignore
_updatedAt: item._updatedAt
}));
store.dispatch(shareSetSettings(parseSettings(parsed)));