Sha256: 2d92249ce2960a5542d67f016f6d113eb8271184ba5e9e2280c4c14110854ded

Contents?: true

Size: 1.89 KB

Versions: 94

Compression:

Stored size: 1.89 KB

Contents

import intersection from 'lodash/intersection'

export default class UserPreference {
  constructor(useSingleStore) {
    this.useSingleStore = useSingleStore;
    this.platformPreference = this.platforms()
    this.terminalProgramsPreference = this.terminalPrograms()
    this.frameworkPreference = this.frameworks()
  }

  languages() {
    return this.get(this.getKeyFromType('languages'))
  }

  platforms() {
    return this.get(this.getKeyFromType('platforms'))
  }

  terminalPrograms() {
    return this.get(this.getKeyFromType('terminal_programs'))
  }

  frameworks() {
    return this.get(this.getKeyFromType('frameworks'))
  }

  all() {
    return this.platforms().concat(
      this.terminalPrograms(),
      this.languages(),
      this.frameworks()
    )
  }

  getKeyFromType(type) {
    if (this.useSingleStore) {
        return 'preferences.all';
    }
    switch (type) {
      case 'languages': return 'preferences.languages'
      case 'platforms': return 'preferences.platforms'
      case 'terminal_programs': return 'preferences.terminal_programs'
      case 'frameworks': return 'preferences.frameworks'
    }
  }

  getByType(type) {
    switch (type) {
      case 'languages': return this.languages()
      case 'platforms': return this.platforms()
      case 'terminal_programs': return this.terminalPrograms()
      case 'frameworks': return this.frameworks()
    }
  }

  get(key) {
    const value = window.localStorage.getItem(key)
    if (!value) { return [] }
    return JSON.parse(value)
  }

  store(type, value) {
    const key = this.getKeyFromType(type)
    localStorage.setItem(key, JSON.stringify(value))
  }

  promote(type, value) {
    let list = this.getByType(type) || [];
    list = list.filter(item => item !== value)
    list.unshift(value)
    this.store(type, list)
  }

  topMatch(available) {
    const result = intersection(this.all(), available)
    return result[0] || false
  }
}

Version data entries

94 entries across 94 versions & 1 rubygems

Version Path
station-0.5.16 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.15 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.14 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.13 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.12 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.11 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.10 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.9 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.8 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.7 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.6 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.5 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.4 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.3 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.2 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.1 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.5.0 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.4.9 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.4.8 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js
station-0.4.7 lib/nexmo_developer/app/webpacker/javascript/volta_tabbed_examples/user_preference.js