Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions keeperapi/src/__tests__/syncDown/utils.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { createKdRecordAccessCompositeKey, createKdFolderAccessCompositeKey } from '../../syncDown'

describe('createKdRecordAccessCompositeKey', () => {
it('produces actorUid:recordUid format', () => {
expect(createKdRecordAccessCompositeKey('actor1', 'record1')).toBe('actor1:record1')
})
})

describe('createKdFolderAccessCompositeKey', () => {
it('produces folderUid:actorUid format', () => {
expect(createKdFolderAccessCompositeKey('actor1', 'folder1')).toBe('folder1:actor1')
})
})
19 changes: 16 additions & 3 deletions keeperapi/src/vault.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,21 @@ import {
DKdFolderSharingState,
mapTeamKeyType,
DKdRecordLink,
createKdFolderAccessCompositeKey,
} from './syncDown'

export type VaultStorageDeleteOption =
| { kind: 'keeper_drive_record_access'; actorUid: string; recordUid: string }
| { kind: 'keeper_drive_folder_access'; folderUid: string; actorUid: string }

export type VaultStorage = KeyStorage & {
put(data: VaultStorageData): Promise<void>
getDependencies(uid: string): Promise<Dependency[] | undefined>
addDependencies(dependencies: Dependencies): Promise<void>
removeDependencies(dependencies: RemovedDependencies): Promise<void>
clear(): Promise<void>
get<T extends VaultStorageKind>(kind: T, uid?: string): Promise<VaultStorageResult<T>>
delete(kind: VaultStorageKind, uid: string | Uint8Array): Promise<void>
delete(kind: VaultStorageKind, uid: string | Uint8Array, option?: VaultStorageDeleteOption): Promise<void>
}

export type VaultStorageData =
Expand Down Expand Up @@ -1074,7 +1079,11 @@ const processKdRevokedFolderAccesses = async (
if (!revokedAccess.actorUid || !revokedAccess.folderUid) continue
const actorUid = webSafe64FromBytes(revokedAccess.actorUid)
const folderUid = webSafe64FromBytes(revokedAccess.folderUid)
await storage.delete('keeper_drive_folder_access', `${folderUid}:${actorUid}`)
await storage.delete('keeper_drive_folder_access', createKdFolderAccessCompositeKey(actorUid, folderUid), {
kind: 'keeper_drive_folder_access',
actorUid,
folderUid,
})
}
}

Expand Down Expand Up @@ -1391,7 +1400,11 @@ const processKdRevokedRecordAccesses = async (
if (!revokedAccess.actorUid || !revokedAccess.recordUid) continue
const actorUid = webSafe64FromBytes(revokedAccess.actorUid)
const recordUid = webSafe64FromBytes(revokedAccess.recordUid)
await storage.delete('keeper_drive_record_access', createKdRecordAccessCompositeKey(actorUid, recordUid))
await storage.delete('keeper_drive_record_access', createKdRecordAccessCompositeKey(actorUid, recordUid), {
kind: 'keeper_drive_record_access',
actorUid,
recordUid,
})
}
}

Expand Down
Loading