diff --git a/lib/shared/threads/protocols/dm-thread-protocol.js b/lib/shared/threads/protocols/dm-thread-protocol.js --- a/lib/shared/threads/protocols/dm-thread-protocol.js +++ b/lib/shared/threads/protocols/dm-thread-protocol.js @@ -239,6 +239,8 @@ newMessageInfos: [], }: ChangeThreadSettingsPayload); }, + + supportsCalendarHistory: false, }); export { dmThreadProtocol }; diff --git a/lib/shared/threads/protocols/keyserver-thread-protocol.js b/lib/shared/threads/protocols/keyserver-thread-protocol.js --- a/lib/shared/threads/protocols/keyserver-thread-protocol.js +++ b/lib/shared/threads/protocols/keyserver-thread-protocol.js @@ -171,6 +171,8 @@ const { thick, threadInfo, ...rest } = protocolInput.input; return await utils.keyserverChangeThreadSettings({ ...rest }); }, + + supportsCalendarHistory: true, }); function mediaIDIsKeyserverID(mediaID: string): boolean { diff --git a/lib/shared/threads/thread-spec.js b/lib/shared/threads/thread-spec.js --- a/lib/shared/threads/thread-spec.js +++ b/lib/shared/threads/thread-spec.js @@ -105,6 +105,7 @@ input: ProtocolChangeThreadSettingsInput, utils: ChangeThreadSettingsUtils, ) => Promise, + +supportsCalendarHistory: boolean, }; export type ThreadSpec = { diff --git a/web/calendar/entry.react.js b/web/calendar/entry.react.js --- a/web/calendar/entry.react.js +++ b/web/calendar/entry.react.js @@ -26,6 +26,7 @@ import { colorIsDark } from 'lib/shared/color-utils.js'; import { entryKey } from 'lib/shared/entry-utils.js'; import { useThreadHasPermission } from 'lib/shared/thread-utils.js'; +import { threadSpecs } from 'lib/shared/threads/thread-specs.js'; import { useTunnelbroker } from 'lib/tunnelbroker/tunnelbroker-context.js'; import { type EntryInfo, @@ -175,7 +176,7 @@ let historyButton = null; if ( this.props.entryInfo.id && - !threadTypeIsThick(this.props.threadInfo.type) + threadSpecs[this.props.threadInfo.type].protocol.supportsCalendarHistory ) { historyButton = (