Global State: Remove legacy migrations (#3730)
This commit is contained in:
parent
ac7e8f2ec6
commit
c7db27482d
@ -4,9 +4,6 @@ import { addCallback, removeCallback } from '../lib/teact/teactn';
|
|||||||
import { addActionHandler, getGlobal } from './index';
|
import { addActionHandler, getGlobal } from './index';
|
||||||
|
|
||||||
import type { ActionReturnType, GlobalState, MessageList } from './types';
|
import type { ActionReturnType, GlobalState, MessageList } from './types';
|
||||||
import type {
|
|
||||||
ApiChat, ApiChatFullInfo, ApiUser, ApiUserFullInfo,
|
|
||||||
} from '../api/types';
|
|
||||||
import { MAIN_THREAD_ID } from '../api/types';
|
import { MAIN_THREAD_ID } from '../api/types';
|
||||||
|
|
||||||
import { onBeforeUnload, onIdle, throttle } from '../util/schedulers';
|
import { onBeforeUnload, onIdle, throttle } from '../util/schedulers';
|
||||||
@ -20,7 +17,6 @@ import {
|
|||||||
GLOBAL_STATE_CACHE_CUSTOM_EMOJI_LIMIT,
|
GLOBAL_STATE_CACHE_CUSTOM_EMOJI_LIMIT,
|
||||||
ALL_FOLDER_ID,
|
ALL_FOLDER_ID,
|
||||||
ARCHIVED_FOLDER_ID,
|
ARCHIVED_FOLDER_ID,
|
||||||
DEFAULT_PATTERN_COLOR,
|
|
||||||
DEFAULT_LIMITS,
|
DEFAULT_LIMITS,
|
||||||
ANIMATION_LEVEL_MIN,
|
ANIMATION_LEVEL_MIN,
|
||||||
ANIMATION_LEVEL_MED,
|
ANIMATION_LEVEL_MED,
|
||||||
@ -173,186 +169,19 @@ function unsafeMigrateCache(cached: GlobalState, initialState: GlobalState) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('canAutoPlayVideos' in cached.settings.byKey) {
|
|
||||||
cached.settings.performance.autoplayVideos = cached.settings.byKey.canAutoPlayVideos;
|
|
||||||
delete cached.settings.byKey.canAutoPlayVideos;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('canAutoPlayGifs' in cached.settings.byKey) {
|
|
||||||
cached.settings.performance.autoplayGifs = cached.settings.byKey.canAutoPlayGifs;
|
|
||||||
delete cached.settings.byKey.canAutoPlayGifs;
|
|
||||||
}
|
|
||||||
|
|
||||||
cached.settings.performance = {
|
cached.settings.performance = {
|
||||||
...initialState.settings.performance,
|
...initialState.settings.performance,
|
||||||
...cached.settings.performance,
|
...cached.settings.performance,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!cached.stickers.premium) {
|
|
||||||
cached.stickers.premium = initialState.stickers.premium;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.attachMenu) {
|
|
||||||
cached.attachMenu = {
|
|
||||||
bots: {},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.trustedBotIds) {
|
|
||||||
cached.trustedBotIds = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.passcode) {
|
|
||||||
cached.passcode = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cached.activeSessions?.byHash === undefined) {
|
|
||||||
cached.activeSessions = {
|
|
||||||
byHash: {},
|
|
||||||
orderedHashes: [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.activeWebSessions) {
|
|
||||||
cached.activeWebSessions = {
|
|
||||||
byHash: {},
|
|
||||||
orderedHashes: [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.transcriptions) {
|
|
||||||
cached.transcriptions = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cached.appConfig && !cached.appConfig.limits) {
|
if (cached.appConfig && !cached.appConfig.limits) {
|
||||||
cached.appConfig.limits = DEFAULT_LIMITS;
|
cached.appConfig.limits = DEFAULT_LIMITS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cached.customEmojis) {
|
|
||||||
cached.customEmojis = {
|
|
||||||
added: {},
|
|
||||||
byId: {},
|
|
||||||
lastRendered: [],
|
|
||||||
forEmoji: {},
|
|
||||||
statusRecent: {},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.customEmojis.statusRecent) {
|
|
||||||
cached.customEmojis.statusRecent = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.recentCustomEmojis) {
|
|
||||||
cached.recentCustomEmojis = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.stickers.premiumSet) {
|
|
||||||
cached.stickers.premiumSet = {
|
|
||||||
stickers: [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.customEmojis.forEmoji) {
|
|
||||||
cached.customEmojis.forEmoji = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.users.fullInfoById) {
|
|
||||||
const result = Object.entries(cached.users.byId).reduce((acc, [id, user]) => {
|
|
||||||
if ('fullInfo' in user) {
|
|
||||||
if (user.fullInfo !== undefined) {
|
|
||||||
acc.fullInfo[id] = user.fullInfo as ApiUserFullInfo;
|
|
||||||
}
|
|
||||||
delete user.fullInfo;
|
|
||||||
}
|
|
||||||
acc.users[id] = user;
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, {
|
|
||||||
users: {} as Record<string, ApiUser>,
|
|
||||||
fullInfo: {} as Record<string, ApiUserFullInfo>,
|
|
||||||
});
|
|
||||||
|
|
||||||
cached.users.fullInfoById = result.fullInfo;
|
|
||||||
cached.users.byId = result.users;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cached.chats.fullInfoById) {
|
|
||||||
const result = Object.entries(cached.chats.byId).reduce((acc, [id, chat]) => {
|
|
||||||
if ('fullInfo' in chat) {
|
|
||||||
if (chat.fullInfo !== undefined) {
|
|
||||||
acc.fullInfo[id] = chat.fullInfo as ApiChatFullInfo;
|
|
||||||
}
|
|
||||||
delete chat.fullInfo;
|
|
||||||
}
|
|
||||||
acc.chats[id] = chat;
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, {
|
|
||||||
chats: {} as Record<string, ApiChat>,
|
|
||||||
fullInfo: {} as Record<string, ApiChatFullInfo>,
|
|
||||||
});
|
|
||||||
|
|
||||||
cached.chats.fullInfoById = result.fullInfo;
|
|
||||||
cached.chats.byId = result.chats;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO Remove in Jan 2023 (this was re-designed but can be hardcoded in cache)
|
|
||||||
const { light: lightTheme } = cached.settings.themes;
|
|
||||||
if (lightTheme?.patternColor === 'rgba(90, 110, 70, 0.6)' || !lightTheme?.patternColor) {
|
|
||||||
cached.settings.themes.light = {
|
|
||||||
...lightTheme,
|
|
||||||
patternColor: DEFAULT_PATTERN_COLOR,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
cached.serviceNotifications.forEach((notification) => {
|
|
||||||
const { isHidden } = notification as any;
|
|
||||||
if (isHidden) {
|
|
||||||
notification.isDeleted = isHidden;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO Remove in Mar 2023 (this was re-designed but can be hardcoded in cache)
|
|
||||||
if (cached.users.byId && Object.values(cached.users.byId).some((u) => 'username' in u)) {
|
|
||||||
cached.users.byId = Object.entries(cached.users.byId).reduce((acc, [id, user]) => {
|
|
||||||
if ('username' in user) {
|
|
||||||
delete user.username;
|
|
||||||
}
|
|
||||||
acc[id] = user;
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, {} as Record<string, ApiUser>);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO Remove in Mar 2023 (this was re-designed but can be hardcoded in cache)
|
|
||||||
if (cached.chats.byId && Object.values(cached.chats.byId).some((c) => 'username' in c)) {
|
|
||||||
cached.chats.byId = Object.entries(cached.chats.byId).reduce((acc, [id, user]) => {
|
|
||||||
if ('username' in user) {
|
|
||||||
delete user.username;
|
|
||||||
}
|
|
||||||
acc[id] = user;
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, {} as Record<string, ApiChat>);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO Remove in Apr 2023 (this was re-designed but can be hardcoded in cache)
|
|
||||||
if (cached.messages.byChatId) {
|
|
||||||
const wasUpdated = Object.values(cached.messages.byChatId)
|
|
||||||
.some((messages) => Object.values(messages.byId).some(({ reactions }) => {
|
|
||||||
return reactions?.results[0]?.reaction && typeof reactions.results[0].reaction !== 'string';
|
|
||||||
}));
|
|
||||||
if (!wasUpdated) {
|
|
||||||
for (const messages of Object.values(cached.messages.byChatId)) {
|
|
||||||
for (const message of Object.values(messages.byId)) {
|
|
||||||
delete message.reactions;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (typeof cached.config?.defaultReaction === 'string') {
|
if (typeof cached.config?.defaultReaction === 'string') {
|
||||||
cached.config.defaultReaction = { emoticon: cached.config.defaultReaction };
|
cached.config.defaultReaction = { emoticon: cached.config.defaultReaction };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof cached.availableReactions?.[0].reaction === 'string') {
|
if (typeof cached.availableReactions?.[0].reaction === 'string') {
|
||||||
cached.availableReactions = cached.availableReactions
|
cached.availableReactions = cached.availableReactions
|
||||||
.map((r) => ({ ...r, reaction: { emoticon: r.reaction as unknown as string } }));
|
.map((r) => ({ ...r, reaction: { emoticon: r.reaction as unknown as string } }));
|
||||||
@ -361,6 +190,10 @@ function unsafeMigrateCache(cached: GlobalState, initialState: GlobalState) {
|
|||||||
if (!cached.archiveSettings) {
|
if (!cached.archiveSettings) {
|
||||||
cached.archiveSettings = initialState.archiveSettings;
|
cached.archiveSettings = initialState.archiveSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!cached.stories) {
|
||||||
|
cached.stories = initialState.stories;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateCache() {
|
function updateCache() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user