Files
standardnotes-app-web/packages/snjs/lib/Migrations/StorageReaders/Functions.ts
Karol Sójko 5bca53736b chore: display shared vault file usage (#2399)
* chore: display shared vault file usage

* fix: specs

* fix: reshape filtering result

* fix: resolving invalid server items

* fix: get revisions specs

* fix: processing issue

* fix: tests

---------

Co-authored-by: Mo <mo@standardnotes.com>
2023-08-11 08:59:16 +02:00

33 lines
1.1 KiB
TypeScript

import { Environment, ApplicationIdentifier } from '@standardnotes/models'
import { compareSemVersions, isRightVersionGreaterThanLeft } from '@Lib/Version'
import { DeviceInterface } from '@standardnotes/services'
import { StorageReader } from './Reader'
import * as ReaderClasses from './Versions'
function ReaderClassForVersion(version: string): typeof ReaderClasses.StorageReader2_0_0 {
/** Sort readers by newest first */
const allReaders = Object.values(ReaderClasses).sort((a, b) => {
return compareSemVersions(a.version(), b.version()) * -1
})
for (const reader of allReaders) {
if (reader.version() === version) {
return reader
}
if (isRightVersionGreaterThanLeft(reader.version(), version)) {
return reader
}
}
throw Error(`Cannot find reader for version ${version}`)
}
export function CreateReader(
version: string,
deviceInterface: DeviceInterface,
identifier: ApplicationIdentifier,
environment: Environment,
): StorageReader {
const readerClass = ReaderClassForVersion(version)
return new readerClass(deviceInterface, identifier, environment)
}