更新同步协商流程

This commit is contained in:
lyswhut 2023-09-06 16:01:28 +08:00
parent b1ccc06903
commit de15a3b2ae
3 changed files with 34 additions and 17 deletions

View File

@ -5,19 +5,30 @@
import { featureVersion } from '../modules' import { featureVersion } from '../modules'
export const getEnabledFeatures = async(socket: LX.Sync.Socket, serverType: LX.Sync.ServerType, supportedFeatures: LX.Sync.SupportedFeatures): Promise<LX.Sync.EnabledFeatures> => { const handler: Omit<LX.Sync.ClientSyncHandlerActions<LX.Sync.Socket>, 'finished'> = {
async getEnabledFeatures(socket, serverType, supportedFeatures) {
// const userSpace = getUserSpace(socket.userInfo.name) // const userSpace = getUserSpace(socket.userInfo.name)
const features: LX.Sync.EnabledFeatures = {}
switch (serverType) { switch (serverType) {
case 'server': case 'server':
return { if (featureVersion.list == supportedFeatures.list) {
list: featureVersion.list == supportedFeatures.list, features.list = { skipSnapshot: false }
dislike: featureVersion.dislike == supportedFeatures.dislike,
} }
if (featureVersion.dislike == supportedFeatures.dislike) {
features.dislike = { skipSnapshot: false }
}
return features
case 'desktop-app': case 'desktop-app':
default: default:
return { if (featureVersion.list == supportedFeatures.list) {
list: featureVersion.list == supportedFeatures.list, features.list = { skipSnapshot: false }
dislike: featureVersion.dislike == supportedFeatures.dislike,
} }
if (featureVersion.dislike == supportedFeatures.dislike) {
features.dislike = { skipSnapshot: false }
} }
return features
} }
},
}
export default handler

View File

@ -1,4 +1,4 @@
import * as handler from './handler' import handler from './handler'
import { callObj as _callObj } from '../modules' import { callObj as _callObj } from '../modules'
export { modules } from '../modules' export { modules } from '../modules'

10
src/types/sync.d.ts vendored
View File

@ -45,10 +45,16 @@ declare global {
href: string href: string
} }
interface ListConfig {
skipSnapshot: boolean
}
interface DislikeConfig {
skipSnapshot: boolean
}
type ServerType = 'desktop-app' | 'server' type ServerType = 'desktop-app' | 'server'
interface EnabledFeatures { interface EnabledFeatures {
list: boolean list?: false | ListConfig
dislike: boolean dislike?: false | DislikeConfig
} }
type SupportedFeatures = Partial<{ [k in keyof EnabledFeatures]: number }> type SupportedFeatures = Partial<{ [k in keyof EnabledFeatures]: number }>
} }