www.spaceplanner.app

Web client to the spaceplanner API
git clone git://jacobedwards.org/www.spaceplanner.app
Log | Files | Refs

dev.js (1138B)


      1 let _settings = {
      2 	devapi: { name: "Developer API", type: "bool", brief: "Don't use the production API" }
      3 }
      4 
      5 for (let k in _settings) {
      6 	switch (_settings[k].type) {
      7 	case "bool": 
      8 	case "string": 
      9 		break;
     10 	default:
     11 		console.error(`"${k}" developer setting has an invalid type (${_settings[k].type}); deleting`)
     12 		delete _settings[k]
     13 		continue
     14 	}
     15 	_settings[k].key = k
     16 }
     17 
     18 export const settings = _settings
     19 
     20 export function setting(k, v) {
     21 	if (v === undefined) {
     22 		if (settings[k] == undefined) {
     23 			console.error(`Tried to access undefined setting "${k}": ${new Error("").stack}`)
     24 			return undefined
     25 		}
     26 		return getValue(k)
     27 	}
     28 	setValue(k, v)
     29 }
     30 
     31 function getValue(k) {
     32 	let v = localStorage.getItem(storageKey(k))
     33 	console.log("dev.getValue", k, v)
     34 	if (settings[k].type === "bool") {
     35 		return v == "true"
     36 	} else if (settings[k].type === "string") {
     37 		return v
     38 	}
     39 	throw new Error("Invalid setting type")
     40 }
     41 
     42 function setValue(k, v) {
     43 	console.log("dev.setValue", k, v)
     44 	if (v == null) {
     45 		localStorage.removeItem(storageKey(k))
     46 	} else {
     47 		localStorage.setItem(storageKey(k), v)
     48 	}
     49 }
     50 
     51 function storageKey(k) {
     52 	return "dev-" + k
     53 }