mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-24 18:56:32 -05:00
fix: catch access forbidden errors for local storage access
Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
parent
be3ca5cdeb
commit
ce286cc092
2 changed files with 27 additions and 8 deletions
|
@ -17,18 +17,25 @@ const logger = new Logger('Application Loader')
|
||||||
* Create a custom delay in the loading of the application.
|
* Create a custom delay in the loading of the application.
|
||||||
*/
|
*/
|
||||||
const customDelay: () => Promise<void> = async () => {
|
const customDelay: () => Promise<void> = async () => {
|
||||||
if (
|
if ((isDevMode || isTestMode) && (window.location.search.startsWith('?customDelay=') || isCustomDelayActive())) {
|
||||||
(isDevMode || isTestMode) &&
|
|
||||||
typeof window !== 'undefined' &&
|
|
||||||
typeof window.localStorage !== 'undefined' &&
|
|
||||||
(window.location.search.startsWith('?customDelay=') || window.localStorage.getItem('customDelay'))
|
|
||||||
) {
|
|
||||||
return new Promise((resolve) => setTimeout(resolve, 500000000))
|
return new Promise((resolve) => setTimeout(resolve, 500000000))
|
||||||
} else {
|
} else {
|
||||||
return Promise.resolve()
|
return Promise.resolve()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isCustomDelayActive = (): boolean => {
|
||||||
|
try {
|
||||||
|
return (
|
||||||
|
typeof window !== 'undefined' &&
|
||||||
|
typeof window.localStorage !== 'undefined' &&
|
||||||
|
window.localStorage.getItem('customDelay') !== null
|
||||||
|
)
|
||||||
|
} catch {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export interface InitTask {
|
export interface InitTask {
|
||||||
name: string
|
name: string
|
||||||
task: () => Promise<void>
|
task: () => Promise<void>
|
||||||
|
|
|
@ -185,7 +185,11 @@ export const storeLocalHistory = (): void => {
|
||||||
...entry,
|
...entry,
|
||||||
origin: undefined
|
origin: undefined
|
||||||
}))
|
}))
|
||||||
window.localStorage.setItem('history', JSON.stringify(entriesWithoutOrigin))
|
try {
|
||||||
|
window.localStorage.setItem('history', JSON.stringify(entriesWithoutOrigin))
|
||||||
|
} catch (error) {
|
||||||
|
log.error("Can't save history", error)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -206,7 +210,7 @@ export const storeRemoteHistory = (): Promise<unknown> => {
|
||||||
* @return The local history entries with the origin set to local.
|
* @return The local history entries with the origin set to local.
|
||||||
*/
|
*/
|
||||||
const loadLocalHistory = (): HistoryEntryWithOrigin[] => {
|
const loadLocalHistory = (): HistoryEntryWithOrigin[] => {
|
||||||
const localV1Json = window.localStorage.getItem('notehistory')
|
const localV1Json = readV1HistoryEntriesFromLocalStorage()
|
||||||
if (localV1Json) {
|
if (localV1Json) {
|
||||||
try {
|
try {
|
||||||
const localV1History = JSON.parse(JSON.parse(localV1Json) as string) as V1HistoryEntry[]
|
const localV1History = JSON.parse(JSON.parse(localV1Json) as string) as V1HistoryEntry[]
|
||||||
|
@ -235,6 +239,14 @@ const loadLocalHistory = (): HistoryEntryWithOrigin[] => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const readV1HistoryEntriesFromLocalStorage = () => {
|
||||||
|
try {
|
||||||
|
return window.localStorage.getItem('notehistory')
|
||||||
|
} catch {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the remote history and maps each entry with a remote origin label.
|
* Loads the remote history and maps each entry with a remote origin label.
|
||||||
* @return The remote history entries with the origin set to remote.
|
* @return The remote history entries with the origin set to remote.
|
||||||
|
|
Loading…
Reference in a new issue