更新同步协商流程

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'
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)
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

View File

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

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

@ -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 }>
}