summaryrefslogtreecommitdiff
path: root/js/user.js
blob: e6ff6a155d56f53956c07d2a1837c4662ee1a17b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
var user = (function(){

  var user = {}
  var el = document.getElementById("username_input")

  user.init = function(){
    user.load()
    user.bind()
  }
  user.bind = function(){
    el.addEventListener("input", user.save)
  }
  user.load = function(){
    user.username = user.getCookie()
    if (! user.username) {
      user.username = 'rando' + randint(9876876)
      user.setCookie(user.username)
    }
    if (!user.username.match(/^rando/)) {
      el.value = user.username
    }
  }
  user.prefs = new function(){}
  user.prefs.get = function (key){
    return localStorage.getItem("im.prefs." + key)
  }
  user.prefs.set = function (key,value){
    return localStorage.setItem("im.prefs." + key, value)
  }
  user.sanitize = function(){
    return el.value.replace(/[^-_ a-zA-Z0-9]/g,"")
  }
  user.getCookie = function () {
    var username = localStorage.getItem("im.name") || "";
    if (document.cookie && ! username.length) {
      var cookies = document.cookie.split(";")
      for (i in cookies) {
        var cookie = cookies[i].split("=")
        if (cookie[0].indexOf("imname") !== -1) {
          if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length) {
            return cookie[1]
          }
        }
      }
    }
    return username
  }
  var timeout
  user.save = function(){
    clearTimeout(timeout)
    timeout = setTimeout(function(){
      var username = user.sanitize()
      if (username != user.username) user.setCookie(username);
    })
  }
  user.setCookie = function(username){
    if (!user.username.match(/^rando/)) {
      console.log("setting to " + username)
    }
    document.cookie = "imname="+username+";path=/;domain=.asdf.us;max-age=1086400"
    localStorage.setItem("im.name", username);
  }
  
  user.init()
  
  return user
})()