Hex Artifact Content
Not logged in

Artifact cb566620d18ca28f42e5db68f7b49972b98ce5d2:


0000: 2f 2a 20 67 6c 6f 62 61 6c 73 20 74 72 61 63 6b  /* globals track
0010: 65 72 20 2a 2f 0a 0a 69 6d 70 6f 72 74 20 2a 20  er */..import * 
0020: 61 73 20 74 79 70 65 73 20 66 72 6f 6d 20 27 2e  as types from '.
0030: 2e 2f 61 63 74 69 6f 6e 54 79 70 65 73 27 0a 0a  ./actionTypes'..
0040: 65 78 70 6f 72 74 20 63 6f 6e 73 74 20 72 65 67  export const reg
0050: 69 73 74 65 72 20 3d 20 64 61 74 61 20 3d 3e 20  ister = data => 
0060: 28 7b 0a 20 20 74 79 70 65 73 3a 20 5b 74 79 70  ({.  types: [typ
0070: 65 73 2e 52 45 47 49 53 54 45 52 2c 20 74 79 70  es.REGISTER, typ
0080: 65 73 2e 52 45 47 49 53 54 45 52 5f 53 55 43 43  es.REGISTER_SUCC
0090: 45 53 53 2c 20 74 79 70 65 73 2e 52 45 47 49 53  ESS, types.REGIS
00a0: 54 45 52 5f 46 41 49 4c 5d 2c 0a 20 20 70 72 6f  TER_FAIL],.  pro
00b0: 6d 69 73 65 3a 20 63 6c 69 65 6e 74 20 3d 3e 20  mise: client => 
00c0: 63 6c 69 65 6e 74 2e 70 6f 73 74 28 27 2f 75 73  client.post('/us
00d0: 65 72 73 2f 27 20 2b 20 64 61 74 61 2e 75 73 65  ers/' + data.use
00e0: 72 6e 61 6d 65 2c 20 7b 20 64 61 74 61 20 7d 29  rname, { data })
00f0: 0a 20 20 20 20 2e 74 68 65 6e 28 75 73 65 72 20  .    .then(user 
0100: 3d 3e 20 7b 0a 20 20 20 20 20 20 74 72 61 63 6b  => {.      track
0110: 65 72 2e 69 64 65 6e 74 69 66 79 28 75 73 65 72  er.identify(user
0120: 2e 75 73 65 72 6e 61 6d 65 29 0a 0a 20 20 20 20  .username)..    
0130: 20 20 72 65 74 75 72 6e 20 75 73 65 72 0a 20 20    return user.  
0140: 20 20 7d 29 0a 7d 29 0a 0a 65 78 70 6f 72 74 20    }).})..export 
0150: 63 6f 6e 73 74 20 72 65 6c 6f 61 64 20 3d 20 6f  const reload = o
0160: 70 74 73 20 3d 3e 20 7b 0a 20 20 2f 2f 20 54 4f  pts => {.  // TO
0170: 44 4f 20 6d 6f 76 65 20 74 72 61 63 6b 65 72 20  DO move tracker 
0180: 74 6f 20 63 6f 6d 70 6f 6e 65 6e 74 73 0a 20 20  to components.  
0190: 74 72 61 63 6b 65 72 2e 74 72 61 63 6b 28 27 72  tracker.track('r
01a0: 65 6c 6f 61 64 27 29 0a 0a 20 20 72 65 74 75 72  eload')..  retur
01b0: 6e 20 7b 0a 20 20 20 20 74 79 70 65 73 3a 20 5b  n {.    types: [
01c0: 74 79 70 65 73 2e 52 45 4c 4f 41 44 49 4e 47 2c  types.RELOADING,
01d0: 20 74 79 70 65 73 2e 52 45 4c 4f 41 44 5f 53 55   types.RELOAD_SU
01e0: 43 43 45 53 53 2c 20 74 79 70 65 73 2e 52 45 4c  CCESS, types.REL
01f0: 4f 41 44 5f 46 41 49 4c 5d 2c 0a 20 20 20 20 70  OAD_FAIL],.    p
0200: 72 6f 6d 69 73 65 3a 20 63 6c 69 65 6e 74 20 3d  romise: client =
0210: 3e 20 63 6c 69 65 6e 74 2e 70 6f 73 74 28 27 2f  > client.post('/
0220: 75 73 65 72 73 2f 27 20 2b 20 6f 70 74 73 2e 75  users/' + opts.u
0230: 73 65 72 6e 61 6d 65 20 2b 20 27 2f 72 65 6c 6f  sername + '/relo
0240: 61 64 27 29 0a 20 20 7d 0a 7d 0a 0a 65 78 70 6f  ad').  }.}..expo
0250: 72 74 20 63 6f 6e 73 74 20 6c 6f 61 64 43 6f 6e  rt const loadCon
0260: 66 69 67 20 3d 20 28 29 20 3d 3e 20 28 7b 0a 20  fig = () => ({. 
0270: 20 74 79 70 65 73 3a 20 5b 74 79 70 65 73 2e 4c   types: [types.L
0280: 4f 41 44 5f 43 4f 4e 46 49 47 2c 20 74 79 70 65  OAD_CONFIG, type
0290: 73 2e 4c 4f 41 44 5f 43 4f 4e 46 49 47 5f 53 55  s.LOAD_CONFIG_SU
02a0: 43 43 45 53 53 2c 20 74 79 70 65 73 2e 4c 4f 41  CCESS, types.LOA
02b0: 44 5f 43 4f 4e 46 49 47 5f 46 41 49 4c 5d 2c 0a  D_CONFIG_FAIL],.
02c0: 20 20 70 72 6f 6d 69 73 65 3a 20 63 6c 69 65 6e    promise: clien
02d0: 74 20 3d 3e 20 63 6c 69 65 6e 74 2e 67 65 74 28  t => client.get(
02e0: 27 2f 63 6f 6e 66 69 67 27 29 0a 7d 29 0a 0a 65  '/config').})..e
02f0: 78 70 6f 72 74 20 63 6f 6e 73 74 20 75 70 64 61  xport const upda
0300: 74 65 42 61 6c 61 6e 63 65 20 3d 20 62 61 6c 61  teBalance = bala
0310: 6e 63 65 20 3d 3e 20 28 7b 0a 20 20 74 79 70 65  nce => ({.  type
0320: 3a 20 74 79 70 65 73 2e 55 50 44 41 54 45 5f 42  : types.UPDATE_B
0330: 41 4c 41 4e 43 45 2c 0a 20 20 62 61 6c 61 6e 63  ALANCE,.  balanc
0340: 65 3a 20 62 61 6c 61 6e 63 65 0a 7d 29 0a 0a 65  e: balance.})..e
0350: 78 70 6f 72 74 20 63 6f 6e 73 74 20 6c 6f 61 64  xport const load
0360: 20 3d 20 28 29 20 3d 3e 20 64 69 73 70 61 74 63   = () => dispatc
0370: 68 20 3d 3e 20 64 69 73 70 61 74 63 68 28 7b 0a  h => dispatch({.
0380: 20 20 74 79 70 65 73 3a 20 5b 74 79 70 65 73 2e    types: [types.
0390: 41 55 54 48 5f 4c 4f 41 44 2c 20 74 79 70 65 73  AUTH_LOAD, types
03a0: 2e 41 55 54 48 5f 4c 4f 41 44 5f 53 55 43 43 45  .AUTH_LOAD_SUCCE
03b0: 53 53 2c 20 74 79 70 65 73 2e 41 55 54 48 5f 4c  SS, types.AUTH_L
03c0: 4f 41 44 5f 46 41 49 4c 5d 2c 0a 20 20 70 72 6f  OAD_FAIL],.  pro
03d0: 6d 69 73 65 3a 20 63 6c 69 65 6e 74 20 3d 3e 20  mise: client => 
03e0: 63 6c 69 65 6e 74 2e 67 65 74 28 27 2f 61 75 74  client.get('/aut
03f0: 68 2f 6c 6f 61 64 27 29 0a 20 20 20 20 2e 74 68  h/load').    .th
0400: 65 6e 28 75 73 65 72 20 3d 3e 20 7b 0a 20 20 20  en(user => {.   
0410: 20 20 20 74 72 61 63 6b 65 72 2e 69 64 65 6e 74     tracker.ident
0420: 69 66 79 28 75 73 65 72 2e 75 73 65 72 6e 61 6d  ify(user.usernam
0430: 65 29 0a 0a 20 20 20 20 20 20 72 65 74 75 72 6e  e)..      return
0440: 20 75 73 65 72 0a 20 20 20 20 7d 29 0a 7d 29 0a   user.    }).}).
0450: 0a 65 78 70 6f 72 74 20 63 6f 6e 73 74 20 6c 6f  .export const lo
0460: 67 69 6e 20 3d 20 64 61 74 61 20 3d 3e 20 64 69  gin = data => di
0470: 73 70 61 74 63 68 20 3d 3e 20 64 69 73 70 61 74  spatch => dispat
0480: 63 68 28 7b 0a 20 20 74 79 70 65 73 3a 20 5b 74  ch({.  types: [t
0490: 79 70 65 73 2e 4c 4f 47 49 4e 2c 20 74 79 70 65  ypes.LOGIN, type
04a0: 73 2e 4c 4f 47 49 4e 5f 53 55 43 43 45 53 53 2c  s.LOGIN_SUCCESS,
04b0: 20 74 79 70 65 73 2e 4c 4f 47 49 4e 5f 46 41 49   types.LOGIN_FAI
04c0: 4c 5d 2c 0a 20 20 70 72 6f 6d 69 73 65 3a 20 63  L],.  promise: c
04d0: 6c 69 65 6e 74 20 3d 3e 20 63 6c 69 65 6e 74 2e  lient => client.
04e0: 70 6f 73 74 28 27 2f 61 75 74 68 2f 6c 6f 67 69  post('/auth/logi
04f0: 6e 27 2c 20 7b 20 64 61 74 61 20 7d 29 0a 20 20  n', { data }).  
0500: 20 20 2e 74 68 65 6e 28 75 73 65 72 20 3d 3e 20    .then(user => 
0510: 7b 0a 20 20 20 20 20 20 74 72 61 63 6b 65 72 2e  {.      tracker.
0520: 69 64 65 6e 74 69 66 79 28 75 73 65 72 2e 75 73  identify(user.us
0530: 65 72 6e 61 6d 65 29 0a 0a 20 20 20 20 20 20 72  ername)..      r
0540: 65 74 75 72 6e 20 75 73 65 72 0a 20 20 20 20 7d  eturn user.    }
0550: 29 0a 7d 29 0a 0a 65 78 70 6f 72 74 20 63 6f 6e  ).})..export con
0560: 73 74 20 66 6f 72 67 6f 74 20 3d 20 64 61 74 61  st forgot = data
0570: 20 3d 3e 20 28 7b 0a 20 20 74 79 70 65 73 3a 20   => ({.  types: 
0580: 5b 74 79 70 65 73 2e 46 4f 52 47 4f 54 5f 50 41  [types.FORGOT_PA
0590: 53 53 57 4f 52 44 2c 20 74 79 70 65 73 2e 46 4f  SSWORD, types.FO
05a0: 52 47 4f 54 5f 50 41 53 53 57 4f 52 44 5f 53 55  RGOT_PASSWORD_SU
05b0: 43 43 45 53 53 2c 20 74 79 70 65 73 2e 46 4f 52  CCESS, types.FOR
05c0: 47 4f 54 5f 50 41 53 53 57 4f 52 44 5f 46 41 49  GOT_PASSWORD_FAI
05d0: 4c 5d 2c 0a 20 20 70 72 6f 6d 69 73 65 3a 20 63  L],.  promise: c
05e0: 6c 69 65 6e 74 20 3d 3e 20 63 6c 69 65 6e 74 2e  lient => client.
05f0: 70 6f 73 74 28 27 2f 61 75 74 68 2f 66 6f 72 67  post('/auth/forg
0600: 6f 74 2d 70 61 73 73 77 6f 72 64 27 2c 20 7b 0a  ot-password', {.
0610: 20 20 20 20 64 61 74 61 3a 20 7b 0a 20 20 20 20      data: {.    
0620: 20 20 72 65 73 6f 75 72 63 65 3a 20 64 61 74 61    resource: data
0630: 2e 72 65 73 6f 75 72 63 65 0a 20 20 20 20 7d 0a  .resource.    }.
0640: 20 20 7d 29 0a 7d 29 0a 0a 65 78 70 6f 72 74 20    }).})..export 
0650: 63 6f 6e 73 74 20 63 68 61 6e 67 65 50 61 73 73  const changePass
0660: 77 6f 72 64 20 3d 20 64 61 74 61 20 3d 3e 20 28  word = data => (
0670: 7b 0a 20 20 74 79 70 65 73 3a 20 5b 74 79 70 65  {.  types: [type
0680: 73 2e 43 48 41 4e 47 45 5f 50 41 53 53 57 4f 52  s.CHANGE_PASSWOR
0690: 44 2c 20 74 79 70 65 73 2e 43 48 41 4e 47 45 5f  D, types.CHANGE_
06a0: 50 41 53 53 57 4f 52 44 5f 53 55 43 43 45 53 53  PASSWORD_SUCCESS
06b0: 2c 20 74 79 70 65 73 2e 43 48 41 4e 47 45 5f 50  , types.CHANGE_P
06c0: 41 53 53 57 4f 52 44 5f 46 41 49 4c 5d 2c 0a 20  ASSWORD_FAIL],. 
06d0: 20 70 72 6f 6d 69 73 65 3a 20 63 6c 69 65 6e 74   promise: client
06e0: 20 3d 3e 20 63 6c 69 65 6e 74 2e 70 6f 73 74 28   => client.post(
06f0: 27 2f 61 75 74 68 2f 63 68 61 6e 67 65 2d 70 61  '/auth/change-pa
0700: 73 73 77 6f 72 64 27 2c 20 7b 0a 20 20 20 20 64  ssword', {.    d
0710: 61 74 61 3a 20 7b 0a 20 20 20 20 20 20 63 6f 64  ata: {.      cod
0720: 65 3a 20 64 61 74 61 2e 63 6f 64 65 2c 0a 20 20  e: data.code,.  
0730: 20 20 20 20 75 73 65 72 6e 61 6d 65 3a 20 64 61      username: da
0740: 74 61 2e 75 73 65 72 6e 61 6d 65 2c 0a 20 20 20  ta.username,.   
0750: 20 20 20 70 61 73 73 77 6f 72 64 3a 20 64 61 74     password: dat
0760: 61 2e 70 61 73 73 77 6f 72 64 2c 0a 20 20 20 20  a.password,.    
0770: 20 20 72 65 70 65 61 74 50 61 73 73 77 6f 72 64    repeatPassword
0780: 3a 20 64 61 74 61 2e 72 65 70 65 61 74 50 61 73  : data.repeatPas
0790: 73 77 6f 72 64 0a 20 20 20 20 7d 0a 20 20 7d 29  sword.    }.  })
07a0: 0a 7d 29 0a 0a 65 78 70 6f 72 74 20 63 6f 6e 73  .})..export cons
07b0: 74 20 6c 6f 67 6f 75 74 20 3d 20 28 29 20 3d 3e  t logout = () =>
07c0: 20 28 7b 0a 20 20 74 79 70 65 73 3a 20 5b 74 79   ({.  types: [ty
07d0: 70 65 73 2e 4c 4f 47 4f 55 54 2c 20 74 79 70 65  pes.LOGOUT, type
07e0: 73 2e 4c 4f 47 4f 55 54 5f 53 55 43 43 45 53 53  s.LOGOUT_SUCCESS
07f0: 2c 20 74 79 70 65 73 2e 4c 4f 47 4f 55 54 5f 46  , types.LOGOUT_F
0800: 41 49 4c 5d 2c 0a 20 20 70 72 6f 6d 69 73 65 3a  AIL],.  promise:
0810: 20 63 6c 69 65 6e 74 20 3d 3e 20 63 6c 69 65 6e   client => clien
0820: 74 2e 70 6f 73 74 28 27 2f 61 75 74 68 2f 6c 6f  t.post('/auth/lo
0830: 67 6f 75 74 27 29 0a 20 20 20 20 2e 74 68 65 6e  gout').    .then
0840: 28 75 73 65 72 20 3d 3e 20 7b 0a 20 20 20 20 20  (user => {.     
0850: 20 74 72 61 63 6b 65 72 2e 63 6c 65 61 72 49 64   tracker.clearId
0860: 65 6e 74 69 74 79 28 29 0a 0a 20 20 20 20 20 20  entity()..      
0870: 77 69 6e 64 6f 77 2e 6c 6f 63 61 74 69 6f 6e 2e  window.location.
0880: 72 65 6c 6f 61 64 28 29 0a 0a 20 20 20 20 20 20  reload()..      
0890: 72 65 74 75 72 6e 20 75 73 65 72 0a 20 20 20 20  return user.    
08a0: 7d 29 0a 7d 29 0a 0a 65 78 70 6f 72 74 20 63 6f  }).})..export co
08b0: 6e 73 74 20 75 70 64 61 74 65 50 69 63 20 3d 20  nst updatePic = 
08c0: 28 29 20 3d 3e 20 28 7b 0a 20 20 74 79 70 65 3a  () => ({.  type:
08d0: 20 74 79 70 65 73 2e 41 55 54 48 5f 55 50 44 41   types.AUTH_UPDA
08e0: 54 45 5f 50 49 43 0a 7d 29 0a 0a 65 78 70 6f 72  TE_PIC.})..expor
08f0: 74 20 63 6f 6e 73 74 20 73 61 76 65 20 3d 20 28  t const save = (
0900: 6f 70 74 73 2c 20 64 61 74 61 29 20 3d 3e 20 28  opts, data) => (
0910: 7b 0a 20 20 74 79 70 65 73 3a 20 5b 74 79 70 65  {.  types: [type
0920: 73 2e 41 55 54 48 5f 53 41 56 45 2c 20 74 79 70  s.AUTH_SAVE, typ
0930: 65 73 2e 41 55 54 48 5f 53 41 56 45 5f 53 55 43  es.AUTH_SAVE_SUC
0940: 43 45 53 53 2c 20 74 79 70 65 73 2e 41 55 54 48  CESS, types.AUTH
0950: 5f 53 41 56 45 5f 46 41 49 4c 5d 2c 0a 20 20 70  _SAVE_FAIL],.  p
0960: 72 6f 6d 69 73 65 3a 20 63 6c 69 65 6e 74 20 3d  romise: client =
0970: 3e 20 63 6c 69 65 6e 74 2e 70 75 74 28 27 2f 75  > client.put('/u
0980: 73 65 72 73 2f 27 20 2b 20 6f 70 74 73 2e 75 73  sers/' + opts.us
0990: 65 72 6e 61 6d 65 2c 20 7b 64 61 74 61 7d 29 0a  ername, {data}).
09a0: 7d 29 0a 0a 65 78 70 6f 72 74 20 63 6f 6e 73 74  })..export const
09b0: 20 72 65 73 65 6e 64 56 65 72 69 66 69 63 61 74   resendVerificat
09c0: 69 6f 6e 45 6d 61 69 6c 20 3d 20 75 73 65 72 6e  ionEmail = usern
09d0: 61 6d 65 20 3d 3e 20 28 7b 0a 20 20 74 79 70 65  ame => ({.  type
09e0: 73 3a 20 5b 74 79 70 65 73 2e 45 4d 41 49 4c 5f  s: [types.EMAIL_
09f0: 56 45 52 49 46 49 43 41 54 49 4f 4e 5f 52 45 53  VERIFICATION_RES
0a00: 45 4e 44 2c 20 74 79 70 65 73 2e 45 4d 41 49 4c  END, types.EMAIL
0a10: 5f 56 45 52 49 46 49 43 41 54 49 4f 4e 5f 52 45  _VERIFICATION_RE
0a20: 53 45 4e 44 5f 53 55 43 43 45 53 53 2c 20 74 79  SEND_SUCCESS, ty
0a30: 70 65 73 2e 45 4d 41 49 4c 5f 56 45 52 49 46 49  pes.EMAIL_VERIFI
0a40: 43 41 54 49 4f 4e 5f 52 45 53 45 4e 44 5f 46 41  CATION_RESEND_FA
0a50: 49 4c 5d 2c 0a 20 20 70 72 6f 6d 69 73 65 3a 20  IL],.  promise: 
0a60: 63 6c 69 65 6e 74 20 3d 3e 20 63 6c 69 65 6e 74  client => client
0a70: 2e 70 6f 73 74 28 27 2f 75 73 65 72 73 2f 27 20  .post('/users/' 
0a80: 2b 20 75 73 65 72 6e 61 6d 65 20 2b 20 27 2f 72  + username + '/r
0a90: 65 73 65 6e 64 2d 76 65 72 69 66 69 63 61 74 69  esend-verificati
0aa0: 6f 6e 27 29 0a 7d 29 0a 0a 65 78 70 6f 72 74 20  on').})..export 
0ab0: 63 6f 6e 73 74 20 76 65 72 69 66 79 20 3d 20 28  const verify = (
0ac0: 75 73 65 72 6e 61 6d 65 2c 20 63 6f 64 65 29 20  username, code) 
0ad0: 3d 3e 20 28 7b 0a 20 20 74 79 70 65 73 3a 20 5b  => ({.  types: [
0ae0: 74 79 70 65 73 2e 45 4d 41 49 4c 5f 56 45 52 49  types.EMAIL_VERI
0af0: 46 49 43 41 54 49 4f 4e 2c 20 74 79 70 65 73 2e  FICATION, types.
0b00: 45 4d 41 49 4c 5f 56 45 52 49 46 49 43 41 54 49  EMAIL_VERIFICATI
0b10: 4f 4e 5f 53 55 43 43 45 53 53 2c 20 74 79 70 65  ON_SUCCESS, type
0b20: 73 2e 45 4d 41 49 4c 5f 56 45 52 49 46 49 43 41  s.EMAIL_VERIFICA
0b30: 54 49 4f 4e 5f 46 41 49 4c 5d 2c 0a 20 20 70 72  TION_FAIL],.  pr
0b40: 6f 6d 69 73 65 3a 20 63 6c 69 65 6e 74 20 3d 3e  omise: client =>
0b50: 20 63 6c 69 65 6e 74 2e 70 75 74 28 27 2f 75 73   client.put('/us
0b60: 65 72 73 2f 27 20 2b 20 75 73 65 72 6e 61 6d 65  ers/' + username
0b70: 20 2b 20 27 2f 76 65 72 69 66 79 27 2c 20 7b 64   + '/verify', {d
0b80: 61 74 61 3a 20 7b 63 6f 64 65 7d 7d 29 0a 7d 29  ata: {code}}).})
0b90: 0a 0a 65 78 70 6f 72 74 20 63 6f 6e 73 74 20 6c  ..export const l
0ba0: 6f 63 61 74 69 6f 6e 55 70 64 61 74 65 20 3d 20  ocationUpdate = 
0bb0: 28 29 20 3d 3e 20 28 7b 0a 20 20 74 79 70 65 3a  () => ({.  type:
0bc0: 20 74 79 70 65 73 2e 55 50 44 41 54 45 5f 4c 4f   types.UPDATE_LO
0bd0: 43 41 54 49 4f 4e 5f 43 4f 4d 50 4c 45 54 45 0a  CATION_COMPLETE.
0be0: 7d 29 0a 0a 65 78 70 6f 72 74 20 63 6f 6e 73 74  })..export const
0bf0: 20 61 64 76 61 6e 63 65 64 4d 6f 64 65 54 6f 67   advancedModeTog
0c00: 67 6c 65 20 3d 20 28 29 20 3d 3e 20 28 64 69 73  gle = () => (dis
0c10: 70 61 74 63 68 2c 20 67 65 74 53 74 61 74 65 29  patch, getState)
0c20: 20 3d 3e 20 64 69 73 70 61 74 63 68 28 7b 0a 20   => dispatch({. 
0c30: 20 74 79 70 65 3a 20 74 79 70 65 73 2e 53 45 54   type: types.SET
0c40: 5f 41 44 56 41 4e 43 45 44 5f 4d 4f 44 45 2c 0a  _ADVANCED_MODE,.
0c50: 20 20 72 65 73 75 6c 74 3a 20 21 67 65 74 53 74    result: !getSt
0c60: 61 74 65 28 29 2e 61 75 74 68 2e 61 64 76 61 6e  ate().auth.advan
0c70: 63 65 64 4d 6f 64 65 0a 7d 29 0a                 cedMode.}).