From d019f06c0be0865574a71339e4e32096ba19c614 Mon Sep 17 00:00:00 2001 From: Anurag Shivarathri Date: Fri, 9 Dec 2022 15:31:31 +0530 Subject: [PATCH] CRT remove feature flag (#6848) --- app/actions/remote/entry/common.ts | 6 +++--- app/actions/remote/entry/gql_common.ts | 2 +- app/queries/servers/thread.ts | 7 ++++--- app/utils/thread/index.ts | 8 ++++++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/actions/remote/entry/common.ts b/app/actions/remote/entry/common.ts index f22c4dede..ae4d1357b 100644 --- a/app/actions/remote/entry/common.ts +++ b/app/actions/remote/entry/common.ts @@ -149,7 +149,7 @@ export const fetchAppEntryData = async (serverUrl: string, sinceArg: number, ini const confReq = await fetchConfigAndLicense(serverUrl); const prefData = await fetchMyPreferences(serverUrl, fetchOnly); - const isCRTEnabled = Boolean(prefData.preferences && processIsCRTEnabled(prefData.preferences, confReq.config?.CollapsedThreads, confReq.config?.FeatureFlagCollapsedThreads)); + const isCRTEnabled = Boolean(prefData.preferences && processIsCRTEnabled(prefData.preferences, confReq.config?.CollapsedThreads, confReq.config?.FeatureFlagCollapsedThreads, confReq.config?.Version)); if (prefData.preferences) { const crtToggled = await getHasCRTChanged(database, prefData.preferences); if (crtToggled) { @@ -331,7 +331,7 @@ export async function restDeferredAppEntryActions( fetchTeamsChannelsAndUnreadPosts(serverUrl, since, teamData.teams, teamData.memberships, initialTeamId); } - if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads)) { + if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads, config.Version)) { if (initialTeamId) { await syncTeamThreads(serverUrl, initialTeamId); } @@ -465,7 +465,7 @@ const restSyncAllChannelMembers = async (serverUrl: string) => { for await (const myTeam of myTeams) { fetchMyChannelsForTeam(serverUrl, myTeam.id, false, 0, false, excludeDirect); excludeDirect = true; - if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads)) { + if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads, config.Version)) { // need to await here since GM/DM threads in different teams overlap await syncTeamThreads(serverUrl, myTeam.id); } diff --git a/app/actions/remote/entry/gql_common.ts b/app/actions/remote/entry/gql_common.ts index 4fcda9fa4..8d11a2012 100644 --- a/app/actions/remote/entry/gql_common.ts +++ b/app/actions/remote/entry/gql_common.ts @@ -55,7 +55,7 @@ export async function deferredAppEntryGraphQLActions( } }, FETCH_UNREADS_TIMEOUT); - if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads)) { + if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads, config.Version)) { if (initialTeamId) { await syncTeamThreads(serverUrl, initialTeamId); } diff --git a/app/queries/servers/thread.ts b/app/queries/servers/thread.ts index 1dfd16aaa..4ee78d7db 100644 --- a/app/queries/servers/thread.ts +++ b/app/queries/servers/thread.ts @@ -23,7 +23,7 @@ const {SERVER: {CHANNEL, POST, THREAD, THREADS_IN_TEAM, THREAD_PARTICIPANT, TEAM export const getIsCRTEnabled = async (database: Database): Promise => { const config = await getConfig(database); const preferences = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS).fetch(); - return processIsCRTEnabled(preferences, config?.CollapsedThreads, config?.FeatureFlagCollapsedThreads); + return processIsCRTEnabled(preferences, config?.CollapsedThreads, config?.FeatureFlagCollapsedThreads, config?.Version); }; export const getThreadById = async (database: Database, threadId: string) => { @@ -43,10 +43,11 @@ export const getTeamThreadsSyncData = async (database: Database, teamId: string) export const observeIsCRTEnabled = (database: Database) => { const cfgValue = observeConfigValue(database, 'CollapsedThreads'); const featureFlag = observeConfigValue(database, 'FeatureFlagCollapsedThreads'); + const version = observeConfigValue(database, 'Version'); const preferences = queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS).observeWithColumns(['value']); - return combineLatest([cfgValue, featureFlag, preferences]).pipe( + return combineLatest([cfgValue, featureFlag, preferences, version]).pipe( map( - ([cfgV, ff, prefs]) => processIsCRTEnabled(prefs, cfgV, ff), + ([cfgV, ff, prefs, ver]) => processIsCRTEnabled(prefs, cfgV, ff, ver), ), distinctUntilChanged(), ); diff --git a/app/utils/thread/index.ts b/app/utils/thread/index.ts index 6ac382f5a..697a45ef3 100644 --- a/app/utils/thread/index.ts +++ b/app/utils/thread/index.ts @@ -3,18 +3,22 @@ import {Config, Preferences} from '@constants'; import {getPreferenceValue} from '@helpers/api/preference'; +import {isMinimumServerVersion} from '@utils/helpers'; import type PreferenceModel from '@typings/database/models/servers/preference'; -export function processIsCRTEnabled(preferences: PreferenceModel[]|PreferenceType[], configValue?: string, featureFlag?: string): boolean { +export function processIsCRTEnabled(preferences: PreferenceModel[]|PreferenceType[], configValue?: string, featureFlag?: string, version?: string): boolean { let preferenceDefault = Preferences.COLLAPSED_REPLY_THREADS_OFF; if (configValue === Config.DEFAULT_ON) { preferenceDefault = Preferences.COLLAPSED_REPLY_THREADS_ON; } const preference = getPreferenceValue(preferences, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.COLLAPSED_REPLY_THREADS, preferenceDefault); + // CRT Feature flag removed in 7.6 + const isFeatureFlagEnabled = version && isMinimumServerVersion(version, 7, 6) ? true : featureFlag === Config.TRUE; + const isAllowed = ( - featureFlag === Config.TRUE && + isFeatureFlagEnabled && configValue !== Config.DISABLED );