refactor(cache): remove unused cache service
This commit is contained in:
parent
1e643c60e5
commit
664ed9de06
33
src/pages/settings/cache/index.tsx
vendored
33
src/pages/settings/cache/index.tsx
vendored
@ -1,4 +1,3 @@
|
|||||||
import ClearIcon from '@mui/icons-material/Clear'
|
|
||||||
import InputIcon from '@mui/icons-material/Input'
|
import InputIcon from '@mui/icons-material/Input'
|
||||||
import IosShareIcon from '@mui/icons-material/IosShare'
|
import IosShareIcon from '@mui/icons-material/IosShare'
|
||||||
import {
|
import {
|
||||||
@ -9,36 +8,12 @@ import {
|
|||||||
ListSubheader,
|
ListSubheader,
|
||||||
useTheme
|
useTheme
|
||||||
} from '@mui/material'
|
} from '@mui/material'
|
||||||
import { useState } from 'react'
|
|
||||||
import { toast } from 'react-toastify'
|
|
||||||
import { localCache } from '../../../services'
|
|
||||||
import { LoadingSpinner } from '../../../components/LoadingSpinner'
|
|
||||||
import { Container } from '../../../components/Container'
|
import { Container } from '../../../components/Container'
|
||||||
import { Footer } from '../../../components/Footer/Footer'
|
import { Footer } from '../../../components/Footer/Footer'
|
||||||
|
|
||||||
export const CacheSettingsPage = () => {
|
export const CacheSettingsPage = () => {
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
|
|
||||||
const [isLoading, setIsLoading] = useState(false)
|
|
||||||
const [loadingSpinnerDesc, setLoadingSpinnerDesc] = useState('')
|
|
||||||
|
|
||||||
const handleClearData = async () => {
|
|
||||||
setIsLoading(true)
|
|
||||||
setLoadingSpinnerDesc('Clearing cache data')
|
|
||||||
localCache
|
|
||||||
.clearCacheData()
|
|
||||||
.then(() => {
|
|
||||||
toast.success('cleared cached data')
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log('An error occurred in clearing cache data', err)
|
|
||||||
toast.error(err.message || 'An error occurred in clearing cache data')
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
setIsLoading(false)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const listItem = (label: string) => {
|
const listItem = (label: string) => {
|
||||||
return (
|
return (
|
||||||
<ListItemText
|
<ListItemText
|
||||||
@ -53,7 +28,6 @@ export const CacheSettingsPage = () => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Container>
|
<Container>
|
||||||
{isLoading && <LoadingSpinner desc={loadingSpinnerDesc} />}
|
|
||||||
<List
|
<List
|
||||||
sx={{
|
sx={{
|
||||||
width: '100%',
|
width: '100%',
|
||||||
@ -87,13 +61,6 @@ export const CacheSettingsPage = () => {
|
|||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
{listItem('Import (coming soon)')}
|
{listItem('Import (coming soon)')}
|
||||||
</ListItemButton>
|
</ListItemButton>
|
||||||
|
|
||||||
<ListItemButton onClick={handleClearData}>
|
|
||||||
<ListItemIcon>
|
|
||||||
<ClearIcon sx={{ color: theme.palette.error.main }} />
|
|
||||||
</ListItemIcon>
|
|
||||||
{listItem('Clear Cache')}
|
|
||||||
</ListItemButton>
|
|
||||||
</List>
|
</List>
|
||||||
</Container>
|
</Container>
|
||||||
<Footer />
|
<Footer />
|
||||||
|
86
src/services/cache/index.ts
vendored
86
src/services/cache/index.ts
vendored
@ -1,86 +0,0 @@
|
|||||||
import { IDBPDatabase, openDB } from 'idb'
|
|
||||||
import { Event } from 'nostr-tools'
|
|
||||||
import { CachedEvent } from '../../types'
|
|
||||||
import { SchemaV2 } from './schema'
|
|
||||||
|
|
||||||
class LocalCache {
|
|
||||||
// Static property to hold the single instance of LocalCache
|
|
||||||
private static instance: LocalCache | null = null
|
|
||||||
private db!: IDBPDatabase<SchemaV2>
|
|
||||||
|
|
||||||
// Private constructor to prevent direct instantiation
|
|
||||||
private constructor() {}
|
|
||||||
|
|
||||||
// Method to initialize the database
|
|
||||||
private async init() {
|
|
||||||
this.db = await openDB<SchemaV2>('sigit-cache', 2, {
|
|
||||||
upgrade(db, oldVersion) {
|
|
||||||
if (oldVersion < 1) {
|
|
||||||
db.createObjectStore('userMetadata', { keyPath: 'event.pubkey' })
|
|
||||||
}
|
|
||||||
|
|
||||||
if (oldVersion < 2) {
|
|
||||||
const v6 = db as unknown as IDBPDatabase<SchemaV2>
|
|
||||||
|
|
||||||
v6.createObjectStore('userRelayListMetadata', {
|
|
||||||
keyPath: 'event.pubkey'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Static method to get the single instance of LocalCache
|
|
||||||
public static async getInstance(): Promise<LocalCache> {
|
|
||||||
// If the instance doesn't exist, create it
|
|
||||||
if (!LocalCache.instance) {
|
|
||||||
LocalCache.instance = new LocalCache()
|
|
||||||
await LocalCache.instance.init()
|
|
||||||
}
|
|
||||||
// Return the single instance of LocalCache
|
|
||||||
return LocalCache.instance
|
|
||||||
}
|
|
||||||
|
|
||||||
// Method to add user metadata
|
|
||||||
public async addUserMetadata(event: Event) {
|
|
||||||
await this.db.put('userMetadata', { event, cachedAt: Date.now() })
|
|
||||||
}
|
|
||||||
|
|
||||||
// Method to get user metadata by key
|
|
||||||
public async getUserMetadata(key: string): Promise<CachedEvent | null> {
|
|
||||||
const data = await this.db.get('userMetadata', key)
|
|
||||||
return data || null
|
|
||||||
}
|
|
||||||
|
|
||||||
// Method to delete user metadata by key
|
|
||||||
public async deleteUserMetadata(key: string) {
|
|
||||||
await this.db.delete('userMetadata', key)
|
|
||||||
}
|
|
||||||
|
|
||||||
public async addUserRelayListMetadata(event: Event) {
|
|
||||||
await this.db.put('userRelayListMetadata', { event, cachedAt: Date.now() })
|
|
||||||
}
|
|
||||||
|
|
||||||
public async getUserRelayListMetadata(
|
|
||||||
key: string
|
|
||||||
): Promise<CachedEvent | null> {
|
|
||||||
const data = await this.db.get('userRelayListMetadata', key)
|
|
||||||
return data || null
|
|
||||||
}
|
|
||||||
|
|
||||||
public async deleteUserRelayListMetadata(key: string) {
|
|
||||||
await this.db.delete('userRelayListMetadata', key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Method to clear cache data
|
|
||||||
public async clearCacheData() {
|
|
||||||
// Clear the 'userMetadata' store in the IndexedDB database
|
|
||||||
await this.db.clear('userMetadata')
|
|
||||||
|
|
||||||
// Reload the current page to ensure any cached data is reset
|
|
||||||
window.location.reload()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Export the single instance of LocalCache
|
|
||||||
export const localCache = await LocalCache.getInstance()
|
|
16
src/services/cache/schema.ts
vendored
16
src/services/cache/schema.ts
vendored
@ -1,16 +0,0 @@
|
|||||||
import { DBSchema } from 'idb'
|
|
||||||
import { CachedEvent } from '../../types'
|
|
||||||
|
|
||||||
export interface SchemaV1 extends DBSchema {
|
|
||||||
userMetadata: {
|
|
||||||
key: string
|
|
||||||
value: CachedEvent
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface SchemaV2 extends SchemaV1 {
|
|
||||||
userRelayListMetadata: {
|
|
||||||
key: string
|
|
||||||
value: CachedEvent
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,2 +1 @@
|
|||||||
export * from './cache'
|
|
||||||
export * from './signer'
|
export * from './signer'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user