From cb136ac81e8576f398683d82d3406e9df71c0260 Mon Sep 17 00:00:00 2001 From: Caleb Roseland Date: Tue, 30 Jun 2026 18:36:27 -0500 Subject: [PATCH] MM-61199: Remove channelBookmarks feature flag (#37120) --- .../playwright/lib/src/server/default_config.ts | 1 - server/channels/api4/channel_bookmark.go | 12 +++++------- server/public/model/feature_flags.go | 3 --- .../src/components/channel_bookmarks/utils.ts | 8 +------- 4 files changed, 6 insertions(+), 18 deletions(-) diff --git a/e2e-tests/playwright/lib/src/server/default_config.ts b/e2e-tests/playwright/lib/src/server/default_config.ts index 4785d4bdc40..1ae8fab70c9 100644 --- a/e2e-tests/playwright/lib/src/server/default_config.ts +++ b/e2e-tests/playwright/lib/src/server/default_config.ts @@ -801,7 +801,6 @@ const defaultServerConfig: AdminConfig = { MoveThreadsEnabled: false, StreamlinedMarketplace: true, CloudDedicatedExportUI: false, - ChannelBookmarks: true, WebSocketEventScope: true, NotificationMonitoring: true, ExperimentalAuditSettingsSystemConsoleUI: true, diff --git a/server/channels/api4/channel_bookmark.go b/server/channels/api4/channel_bookmark.go index c3dc5f30b21..d2ce53f04e9 100644 --- a/server/channels/api4/channel_bookmark.go +++ b/server/channels/api4/channel_bookmark.go @@ -17,13 +17,11 @@ func rejectExternallyManagedBookmarkWrite(op string) *model.AppError { } func (api *API) InitChannelBookmarks() { - if api.srv.Config().FeatureFlags.ChannelBookmarks { - api.BaseRoutes.ChannelBookmarks.Handle("", api.APISessionRequired(createChannelBookmark)).Methods(http.MethodPost) - api.BaseRoutes.ChannelBookmark.Handle("", api.APISessionRequired(updateChannelBookmark)).Methods(http.MethodPatch) - api.BaseRoutes.ChannelBookmark.Handle("/sort_order", api.APISessionRequired(updateChannelBookmarkSortOrder)).Methods(http.MethodPost) - api.BaseRoutes.ChannelBookmark.Handle("", api.APISessionRequired(deleteChannelBookmark)).Methods(http.MethodDelete) - api.BaseRoutes.ChannelBookmarks.Handle("", api.APISessionRequired(listChannelBookmarksForChannel)).Methods(http.MethodGet) - } + api.BaseRoutes.ChannelBookmarks.Handle("", api.APISessionRequired(createChannelBookmark)).Methods(http.MethodPost) + api.BaseRoutes.ChannelBookmark.Handle("", api.APISessionRequired(updateChannelBookmark)).Methods(http.MethodPatch) + api.BaseRoutes.ChannelBookmark.Handle("/sort_order", api.APISessionRequired(updateChannelBookmarkSortOrder)).Methods(http.MethodPost) + api.BaseRoutes.ChannelBookmark.Handle("", api.APISessionRequired(deleteChannelBookmark)).Methods(http.MethodDelete) + api.BaseRoutes.ChannelBookmarks.Handle("", api.APISessionRequired(listChannelBookmarksForChannel)).Methods(http.MethodGet) } func createChannelBookmark(c *Context, w http.ResponseWriter, r *http.Request) { diff --git a/server/public/model/feature_flags.go b/server/public/model/feature_flags.go index da3e9f73d92..0a623a77ca3 100644 --- a/server/public/model/feature_flags.go +++ b/server/public/model/feature_flags.go @@ -49,8 +49,6 @@ type FeatureFlags struct { CloudDedicatedExportUI bool - ChannelBookmarks bool - WebSocketEventScope bool NotificationMonitoring bool @@ -172,7 +170,6 @@ func (f *FeatureFlags) SetDefaults() { f.MoveThreadsEnabled = false f.StreamlinedMarketplace = true f.CloudDedicatedExportUI = false - f.ChannelBookmarks = true f.WebSocketEventScope = true f.NotificationMonitoring = true f.ExperimentalAuditSettingsSystemConsoleUI = true diff --git a/webapp/channels/src/components/channel_bookmarks/utils.ts b/webapp/channels/src/components/channel_bookmarks/utils.ts index 5daf05c4ed4..29586cb04f1 100644 --- a/webapp/channels/src/components/channel_bookmarks/utils.ts +++ b/webapp/channels/src/components/channel_bookmarks/utils.ts @@ -11,7 +11,7 @@ import type {GlobalState} from '@mattermost/types/store'; import {Permissions} from 'mattermost-redux/constants'; import {getChannelBookmarks} from 'mattermost-redux/selectors/entities/channel_bookmarks'; import {getChannel, getMyChannelMember} from 'mattermost-redux/selectors/entities/channels'; -import {getConfig, getFeatureFlagValue, getLicense} from 'mattermost-redux/selectors/entities/general'; +import {getConfig, getLicense} from 'mattermost-redux/selectors/entities/general'; import {haveIChannelPermission} from 'mattermost-redux/selectors/entities/roles'; import {insertWithoutDuplicates} from 'mattermost-redux/utils/array_utils'; import {getFileDownloadUrl} from 'mattermost-redux/utils/file_utils'; @@ -118,12 +118,6 @@ export const useCanGetLinkPreviews = () => { }; export const getIsChannelBookmarksEnabled = (state: GlobalState) => { - const isEnabled = getFeatureFlagValue(state, 'ChannelBookmarks') === 'true'; - - if (!isEnabled) { - return false; - } - const license = getLicense(state); return license?.IsLicensed === 'true';