mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-08-07 04:32:51 -04:00
Refactor get metadata call (#771)
This commit is contained in:
3 files changed
+19
-22
No files matched your search
@@ -118,9 +118,12 @@ function RootLayoutNav() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the vault revision is higher, fetch the latest vault
|
// If the vault revision is higher, fetch the latest vault
|
||||||
|
const vaultMetadata = await dbContext.getVaultMetadata();
|
||||||
|
const vaultRevisionNumber = vaultMetadata?.vaultRevisionNumber ?? 0;
|
||||||
console.log('Vault revision:', statusResponse.vaultRevision);
|
console.log('Vault revision:', statusResponse.vaultRevision);
|
||||||
console.log('Current vault revision:', dbContext.vaultRevision);
|
console.log('Current vault revision:', vaultRevisionNumber);
|
||||||
if (statusResponse.vaultRevision > dbContext.vaultRevision) {
|
|
||||||
|
if (statusResponse.vaultRevision > vaultRevisionNumber) {
|
||||||
const vaultResponseJson = await webApi.get<VaultResponse>('Vault');
|
const vaultResponseJson = await webApi.get<VaultResponse>('Vault');
|
||||||
|
|
||||||
const vaultError = webApi.validateVaultResponse(vaultResponseJson);
|
const vaultError = webApi.validateVaultResponse(vaultResponseJson);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ type DbContextType = {
|
|||||||
dbAvailable: boolean;
|
dbAvailable: boolean;
|
||||||
initializeDatabase: (vaultResponse: VaultResponse, derivedKey: string | null) => Promise<void>;
|
initializeDatabase: (vaultResponse: VaultResponse, derivedKey: string | null) => Promise<void>;
|
||||||
clearDatabase: () => void;
|
clearDatabase: () => void;
|
||||||
vaultMetadata: VaultMetadata | null;
|
getVaultMetadata: () => Promise<VaultMetadata | null>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const DbContext = createContext<DbContextType | undefined>(undefined);
|
const DbContext = createContext<DbContextType | undefined>(undefined);
|
||||||
@@ -36,11 +36,6 @@ export const DbProvider: React.FC<{ children: React.ReactNode }> = ({ children }
|
|||||||
*/
|
*/
|
||||||
const [dbAvailable, setDbAvailable] = useState(false);
|
const [dbAvailable, setDbAvailable] = useState(false);
|
||||||
|
|
||||||
/**
|
|
||||||
* Vault metadata containing public/private email domains and revision number
|
|
||||||
*/
|
|
||||||
const [vaultMetadata, setVaultMetadata] = useState<VaultMetadata | null>(null);
|
|
||||||
|
|
||||||
const initializeDatabase = useCallback(async (vaultResponse: VaultResponse, derivedKey: string | null = null) => {
|
const initializeDatabase = useCallback(async (vaultResponse: VaultResponse, derivedKey: string | null = null) => {
|
||||||
// If the derived key is provided, store it in the keychain.
|
// If the derived key is provided, store it in the keychain.
|
||||||
// Otherwise we assume the encryption key is already stored in the keychain.
|
// Otherwise we assume the encryption key is already stored in the keychain.
|
||||||
@@ -62,7 +57,6 @@ export const DbProvider: React.FC<{ children: React.ReactNode }> = ({ children }
|
|||||||
|
|
||||||
setDbInitialized(true);
|
setDbInitialized(true);
|
||||||
setDbAvailable(true);
|
setDbAvailable(true);
|
||||||
setVaultMetadata(metadata);
|
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const checkStoredVault = useCallback(async () => {
|
const checkStoredVault = useCallback(async () => {
|
||||||
@@ -74,22 +68,18 @@ export const DbProvider: React.FC<{ children: React.ReactNode }> = ({ children }
|
|||||||
if (metadata) {
|
if (metadata) {
|
||||||
setDbInitialized(true);
|
setDbInitialized(true);
|
||||||
setDbAvailable(true);
|
setDbAvailable(true);
|
||||||
setVaultMetadata(metadata);
|
|
||||||
} else {
|
} else {
|
||||||
setDbInitialized(true);
|
setDbInitialized(true);
|
||||||
setDbAvailable(false);
|
setDbAvailable(false);
|
||||||
setVaultMetadata(null);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setDbInitialized(true);
|
setDbInitialized(true);
|
||||||
setDbAvailable(false);
|
setDbAvailable(false);
|
||||||
setVaultMetadata(null);
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error checking vault initialization:', error);
|
console.error('Error checking vault initialization:', error);
|
||||||
setDbInitialized(true);
|
setDbInitialized(true);
|
||||||
setDbAvailable(false);
|
setDbAvailable(false);
|
||||||
setVaultMetadata(null);
|
|
||||||
}
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@@ -107,19 +97,25 @@ export const DbProvider: React.FC<{ children: React.ReactNode }> = ({ children }
|
|||||||
*/
|
*/
|
||||||
const clearDatabase = useCallback(() : void => {
|
const clearDatabase = useCallback(() : void => {
|
||||||
setDbInitialized(false);
|
setDbInitialized(false);
|
||||||
setVaultMetadata(null);
|
|
||||||
// TODO: implement actual vault clearing.
|
// TODO: implement actual vault clearing.
|
||||||
credentialManager.clearVault();
|
credentialManager.clearVault();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current vault metadata directly from SQLite client
|
||||||
|
*/
|
||||||
|
const getVaultMetadata = useCallback(async () : Promise<VaultMetadata | null> => {
|
||||||
|
return await sqliteClient.getVaultMetadata();
|
||||||
|
}, []);
|
||||||
|
|
||||||
const contextValue = useMemo(() => ({
|
const contextValue = useMemo(() => ({
|
||||||
sqliteClient,
|
sqliteClient,
|
||||||
dbInitialized,
|
dbInitialized,
|
||||||
dbAvailable,
|
dbAvailable,
|
||||||
initializeDatabase,
|
initializeDatabase,
|
||||||
clearDatabase,
|
clearDatabase,
|
||||||
vaultMetadata
|
getVaultMetadata
|
||||||
}), [sqliteClient, dbInitialized, dbAvailable, initializeDatabase, clearDatabase, vaultMetadata]);
|
}), [sqliteClient, dbInitialized, dbAvailable, initializeDatabase, clearDatabase, getVaultMetadata]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DbContext.Provider value={contextValue}>
|
<DbContext.Provider value={contextValue}>
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
export type VaultResponse = {
|
export type VaultMetadata = {
|
||||||
success: boolean, error?: string,
|
publicEmailDomains: string[],
|
||||||
vault?: string,
|
privateEmailDomains: string[],
|
||||||
publicEmailDomains?: string[],
|
vaultRevisionNumber: number
|
||||||
privateEmailDomains?: string[],
|
|
||||||
vaultRevisionNumber?: number
|
|
||||||
};
|
};
|
||||||
Reference in new issue
Block a user