Move StateStore into the snapshot

This commit is contained in:
Antonio Scandurra
2017-03-08 12:39:04 +01:00
parent 3d4fdd051d
commit 9d123afb81
3 changed files with 30 additions and 25 deletions

View File

@@ -143,6 +143,8 @@ class AtomEnvironment extends Model
@views = new ViewRegistry(this)
@notifications = new NotificationManager
@stateStore = new StateStore('AtomEnvironments', 1)
@config = new Config({notificationManager: @notifications, @enablePersistence})
@config.setSchema null, {type: 'object', properties: _.clone(ConfigSchema)}
@@ -192,7 +194,7 @@ class AtomEnvironment extends Model
@windowEventHandler = new WindowEventHandler({atomEnvironment: this, @applicationDelegate})
@history = new HistoryManager({@project, @commands})
@history = new HistoryManager({@project, @commands, @stateStore})
# Keep instances of HistoryManager in sync
@disposables.add @history.onDidChangeProjects (e) =>
@applicationDelegate.didChangeHistoryManager() unless e.reloaded
@@ -201,8 +203,6 @@ class AtomEnvironment extends Model
{@window, @document, @blobStore, @configDirPath, onlyLoadBaseStyleSheets} = params
{devMode, safeMode, resourcePath, clearWindowState} = @getLoadSettings()
@stateStore = new StateStore('AtomEnvironments', 1)
if clearWindowState
@getStorageFolder().clear()
@stateStore.clear()
@@ -255,7 +255,6 @@ class AtomEnvironment extends Model
@observeAutoHideMenuBar()
@history.initialize(@stateStore)
@disposables.add @applicationDelegate.onDidChangeHistoryManager(=> @history.loadState())
attachSaveStateListeners: ->

View File

@@ -8,7 +8,8 @@ import {Emitter, CompositeDisposable} from 'event-kit'
//
// The project history is used to enable the 'Reopen Project' menu.
export class HistoryManager {
constructor ({project, commands}) {
constructor ({project, commands, stateStore}) {
this.stateStore = stateStore
this.emitter = new Emitter()
this.projects = []
this.disposables = new CompositeDisposable()
@@ -16,10 +17,6 @@ export class HistoryManager {
this.disposables.add(project.onDidChangePaths((projectPaths) => this.addProject(projectPaths)))
}
initialize (stateStore) {
this.stateStore = stateStore
}
destroy () {
this.disposables.dispose()
}

View File

@@ -4,22 +4,31 @@ module.exports =
class StateStore {
constructor (databaseName, version) {
this.connected = false
this.dbPromise = new Promise((resolve) => {
let dbOpenRequest = indexedDB.open(databaseName, version)
dbOpenRequest.onupgradeneeded = (event) => {
let db = event.target.result
db.createObjectStore('states')
}
dbOpenRequest.onsuccess = () => {
this.connected = true
resolve(dbOpenRequest.result)
}
dbOpenRequest.onerror = (error) => {
console.error('Could not connect to indexedDB', error)
this.connected = false
resolve(null)
}
})
this.databaseName = databaseName
this.version = version
}
get dbPromise () {
if (!this._dbPromise) {
this._dbPromise = new Promise((resolve) => {
const dbOpenRequest = indexedDB.open(this.databaseName, this.version)
dbOpenRequest.onupgradeneeded = (event) => {
let db = event.target.result
db.createObjectStore('states')
}
dbOpenRequest.onsuccess = () => {
this.connected = true
resolve(dbOpenRequest.result)
}
dbOpenRequest.onerror = (error) => {
console.error('Could not connect to indexedDB', error)
this.connected = false
resolve(null)
}
})
}
return this._dbPromise
}
isConnected () {