feat: desktop app
Co-authored-by: Vivek R <123vivekr@gmail.com> Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
This commit is contained in:
42
packages/hoppscotch-selfhost-desktop/src/lib/sync/mapper.ts
Normal file
42
packages/hoppscotch-selfhost-desktop/src/lib/sync/mapper.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
export const createMapper = <
|
||||
LocalIDType extends string | number,
|
||||
BackendIDType extends string | number
|
||||
>() => {
|
||||
const backendIDByLocalIDMap = new Map<
|
||||
LocalIDType,
|
||||
BackendIDType | undefined
|
||||
>()
|
||||
const localIDByBackendIDMap = new Map<
|
||||
BackendIDType,
|
||||
LocalIDType | undefined
|
||||
>()
|
||||
|
||||
return {
|
||||
addEntry(localIdentifier: LocalIDType, backendIdentifier: BackendIDType) {
|
||||
backendIDByLocalIDMap.set(localIdentifier, backendIdentifier)
|
||||
localIDByBackendIDMap.set(backendIdentifier, localIdentifier)
|
||||
},
|
||||
getValue() {
|
||||
return backendIDByLocalIDMap
|
||||
},
|
||||
getBackendIDByLocalID(localIdentifier: LocalIDType) {
|
||||
return backendIDByLocalIDMap.get(localIdentifier)
|
||||
},
|
||||
getLocalIDByBackendID(backendId: BackendIDType) {
|
||||
return localIDByBackendIDMap.get(backendId)
|
||||
},
|
||||
removeEntry(backendId?: BackendIDType, index?: LocalIDType) {
|
||||
if (backendId) {
|
||||
const index = localIDByBackendIDMap.get(backendId)
|
||||
|
||||
localIDByBackendIDMap.delete(backendId)
|
||||
index && backendIDByLocalIDMap.delete(index)
|
||||
} else if (index) {
|
||||
const backendId = backendIDByLocalIDMap.get(index)
|
||||
|
||||
backendIDByLocalIDMap.delete(index)
|
||||
backendId && localIDByBackendIDMap.delete(backendId)
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user