mirror of
https://github.com/standardnotes/app
synced 2026-10-20 21:03:15 -04:00
33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
import { isMobileScreen, isTabletOrMobileScreen, isTabletScreen } from '@/Utils'
|
|
import { Environment, Result, SyncUseCaseInterface } from '@standardnotes/snjs'
|
|
import { IsNativeMobileWeb } from '@standardnotes/ui-services'
|
|
|
|
type ReturnType = {
|
|
isTabletOrMobile: boolean
|
|
isTablet: boolean
|
|
isMobile: boolean
|
|
}
|
|
|
|
export class IsTabletOrMobileScreen implements SyncUseCaseInterface<ReturnType> {
|
|
private _isNativeMobileWeb = new IsNativeMobileWeb(this.environment)
|
|
|
|
constructor(private environment: Environment) {}
|
|
|
|
execute(): Result<ReturnType> {
|
|
const isNativeMobile = this._isNativeMobileWeb.execute().getValue()
|
|
const isTabletOrMobile = isTabletOrMobileScreen() || isNativeMobile
|
|
const isTablet = isTabletScreen() || (isNativeMobile && !isMobileScreen())
|
|
const isMobile = isMobileScreen() || (isNativeMobile && !isTablet)
|
|
|
|
if (isTablet && isMobile) {
|
|
throw Error('isTablet and isMobile cannot both be true')
|
|
}
|
|
|
|
return Result.ok({
|
|
isTabletOrMobile,
|
|
isTablet,
|
|
isMobile,
|
|
})
|
|
}
|
|
}
|