134 lines
2.7 KiB
TypeScript
134 lines
2.7 KiB
TypeScript
import { Injectable } from '@angular/core'
|
|
import { News } from '../types/news'
|
|
|
|
@Injectable({
|
|
providedIn: 'root',
|
|
})
|
|
export class LocalStorageService {
|
|
constructor() {}
|
|
|
|
permChecker(perm: string) {
|
|
return this.admin?.includes(perm) ?? false
|
|
}
|
|
|
|
logOut() {
|
|
this.loggedIn = undefined
|
|
this.admin = undefined
|
|
}
|
|
|
|
public hasRoom() {
|
|
if (localStorage.getItem('room')) {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
get room() {
|
|
return localStorage.getItem('room') ?? undefined
|
|
}
|
|
|
|
set room(value: string | undefined) {
|
|
if (!value) {
|
|
localStorage.removeItem('room')
|
|
} else {
|
|
localStorage.setItem('room', value)
|
|
}
|
|
}
|
|
|
|
get news(): News[] {
|
|
return JSON.parse(localStorage.getItem('news')!)
|
|
}
|
|
|
|
set news(news: News[]) {
|
|
localStorage.setItem('news', JSON.stringify(news))
|
|
}
|
|
|
|
get loggedIn() {
|
|
if (localStorage.getItem('loggedIn')) {
|
|
return true
|
|
}
|
|
return
|
|
}
|
|
|
|
set loggedIn(is: true | undefined) {
|
|
if (is) {
|
|
localStorage.setItem('loggedIn', 'true')
|
|
} else {
|
|
localStorage.removeItem('loggedIn')
|
|
}
|
|
}
|
|
|
|
set admin(perms: string[] | undefined) {
|
|
if (perms) {
|
|
localStorage.setItem('admin', JSON.stringify(perms))
|
|
} else {
|
|
localStorage.removeItem('admin')
|
|
}
|
|
}
|
|
|
|
get admin() {
|
|
var lsa = localStorage.getItem('admin')
|
|
return lsa ? JSON.parse(lsa) : undefined
|
|
}
|
|
|
|
get isAdmin(): boolean {
|
|
return this.admin ? true : false
|
|
}
|
|
|
|
set capFlag(n: number | null) {
|
|
if (n) {
|
|
localStorage.setItem('cap', n.toString())
|
|
} else {
|
|
localStorage.removeItem('cap')
|
|
}
|
|
}
|
|
|
|
get capFlag() {
|
|
var cap = localStorage.getItem('cap')
|
|
if (cap) {
|
|
return Number(cap)
|
|
} else {
|
|
return null
|
|
}
|
|
}
|
|
|
|
public capCheck(perm: number) {
|
|
return (this.capFlag! & perm) == perm
|
|
}
|
|
|
|
public get newsCheck(): { hash: string; count: number } {
|
|
let nc = localStorage.getItem('newsCheck')
|
|
if (nc) {
|
|
return JSON.parse(nc)
|
|
} else {
|
|
return { hash: '', count: 0 }
|
|
}
|
|
}
|
|
public set newsCheck(value: { hash: string; count: number }) {
|
|
localStorage.setItem('newsCheck', JSON.stringify(value))
|
|
}
|
|
|
|
public get defaultItems(): { sn: string[]; kol: string[] } {
|
|
let di = localStorage.getItem('defaultItems')
|
|
if (di) {
|
|
return JSON.parse(di)
|
|
} else {
|
|
return { sn: [], kol: [] }
|
|
}
|
|
}
|
|
|
|
public set defaultItems(value: { sn: string[]; kol: string[] }) {
|
|
localStorage.setItem('defaultItems', JSON.stringify(value))
|
|
}
|
|
|
|
public newsflag: number | false = false
|
|
|
|
public get vapid(): string {
|
|
return localStorage.getItem('vapid')!
|
|
}
|
|
public set vapid(value: string) {
|
|
localStorage.setItem('vapid', value)
|
|
}
|
|
}
|