From de15a3b2ae7af1c063d50d1119e07a1e79a90c4f Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 6 Sep 2023 16:01:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=90=8C=E6=AD=A5=E5=8D=8F?= =?UTF-8?q?=E5=95=86=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/sync/client/sync/handler.ts | 39 ++++++++++++++++--------- src/plugins/sync/client/sync/index.ts | 2 +- src/types/sync.d.ts | 10 +++++-- 3 files changed, 34 insertions(+), 17 deletions(-) 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 }> }