@humandialog/auth.svelte
Version:
Svelte package to deal with ObjectReef OAuth 2 Identity Provider
75 lines (68 loc) • 2.19 kB
text/typescript
export interface Storage
{
set(key :string, value :string, permanent :boolean) :void;
set_num(key :string, value :number, permanent :boolean) :void
has(key :string) :boolean;
get(key :string, out :(val :string) => void) : boolean; // usage: if(!get('somekey', (v) => { scopedValue=v; } )) ...
get_num(key :string, out :(val :number) => void) : boolean;
}
export class Browser_storage implements Storage
{
public set(key :string, value :string, permanent :boolean = false) :void
{
if(permanent)
localStorage.setItem(key, value);
else
sessionStorage.setItem(key, value);
}
public set_num(key :string, value :number, permanent :boolean = false) :void
{
if(permanent)
localStorage.setItem(key, value.toString());
else
sessionStorage.setItem(key, value.toString());
}
public has(key :string) :boolean
{
let v = sessionStorage.getItem(key);
if( (v != undefined) && (v != ""))
return true;
else
{
v = localStorage.getItem(key);
if( (v != undefined) && (v != ""))
return true;
else
return false;
}
}
public get(key :string, out :(val :string) => void) : boolean // usage: if(!get('somekey', (v) => { scopedValue=v; } )) ...
{
let v = sessionStorage.getItem(key);
if( (v != undefined) && (v != ""))
{
out(v);
return true;
}
else
{
v = localStorage.getItem(key);
if( (v != undefined) && (v != ""))
{
out(v);
return true;
}
else
return false;
}
}
public get_num(key :string, out :(val :number) => void) : boolean
{
let vs :string;
const ret = this.get(key, (v)=>{ vs=v; });
if(ret)
out( parseInt(vs) );
return ret;
}
}
export const gv :Browser_storage = new Browser_storage;