diff --git a/src/plugins/sync/client/sync/handler.ts b/src/plugins/sync/client/sync/handler.ts index 3e13b136..77454f40 100644 --- a/src/plugins/sync/client/sync/handler.ts +++ b/src/plugins/sync/client/sync/handler.ts @@ -5,19 +5,30 @@ import { featureVersion } from '../modules' -export const getEnabledFeatures = async(socket: LX.Sync.Socket, serverType: LX.Sync.ServerType, supportedFeatures: LX.Sync.SupportedFeatures): Promise => { +const handler: Omit, 'finished'> = { + async getEnabledFeatures(socket, serverType, supportedFeatures) { // const userSpace = getUserSpace(socket.userInfo.name) - switch (serverType) { - case 'server': - return { - list: featureVersion.list == supportedFeatures.list, - dislike: featureVersion.dislike == supportedFeatures.dislike, - } - case 'desktop-app': - default: - return { - list: featureVersion.list == supportedFeatures.list, - dislike: featureVersion.dislike == supportedFeatures.dislike, - } - } + const features: LX.Sync.EnabledFeatures = {} + switch (serverType) { + case 'server': + if (featureVersion.list == supportedFeatures.list) { + features.list = { skipSnapshot: false } + } + if (featureVersion.dislike == supportedFeatures.dislike) { + features.dislike = { skipSnapshot: false } + } + return features + case 'desktop-app': + default: + if (featureVersion.list == supportedFeatures.list) { + features.list = { skipSnapshot: false } + } + if (featureVersion.dislike == supportedFeatures.dislike) { + features.dislike = { skipSnapshot: false } + } + return features + } + }, } + +export default handler diff --git a/src/plugins/sync/client/sync/index.ts b/src/plugins/sync/client/sync/index.ts index a82a4c98..1dce9ae8 100644 --- a/src/plugins/sync/client/sync/index.ts +++ b/src/plugins/sync/client/sync/index.ts @@ -1,4 +1,4 @@ -import * as handler from './handler' +import handler from './handler' import { callObj as _callObj } from '../modules' export { modules } from '../modules' diff --git a/src/types/sync.d.ts b/src/types/sync.d.ts index 92126e5f..0fa81899 100644 --- a/src/types/sync.d.ts +++ b/src/types/sync.d.ts @@ -45,10 +45,16 @@ declare global { href: string } + interface ListConfig { + skipSnapshot: boolean + } + interface DislikeConfig { + skipSnapshot: boolean + } type ServerType = 'desktop-app' | 'server' interface EnabledFeatures { - list: boolean - dislike: boolean + list?: false | ListConfig + dislike?: false | DislikeConfig } type SupportedFeatures = Partial<{ [k in keyof EnabledFeatures]: number }> }