57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
|
|
||
|
/*
|
||
|
* This file contains the service used to record the last
|
||
|
* accessed buffer and return to it when reconnecting to
|
||
|
* the relay.
|
||
|
*/
|
||
|
(function() {
|
||
|
'use strict';
|
||
|
|
||
|
var bufferResume = angular.module('bufferResume', []);
|
||
|
|
||
|
bufferResume.service('bufferResume', ['settings', function(settings) {
|
||
|
var resumer = {};
|
||
|
var key = settings.host + ":" + settings.port;
|
||
|
|
||
|
// Hold the status that we were able to find the previously accessed buffer
|
||
|
// and reload it. If we cannot, we'll need to know so we can load the default
|
||
|
var hasResumed = false;
|
||
|
|
||
|
// Store the current buffer as having been accessed. We can later retrieve it and compare
|
||
|
// we recieve info from weechat to determine if we should switch to it.
|
||
|
resumer.record = function(activeBuffer) {
|
||
|
var subSetting = settings.currentlyViewedBuffers;
|
||
|
subSetting[key] = activeBuffer.id;
|
||
|
settings.currentlyViewedBuffers = subSetting;
|
||
|
};
|
||
|
|
||
|
// See if the requested buffer information matches the last recorded access. If so,
|
||
|
// the handler should switch to this buffer.
|
||
|
resumer.shouldResume = function(buffer) {
|
||
|
var savedBuffer = settings.currentlyViewedBuffers[key];
|
||
|
if (!savedBuffer) { return false; }
|
||
|
|
||
|
if (!hasResumed) {
|
||
|
if (savedBuffer === buffer.id) {
|
||
|
hasResumed = true;
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// The handler will ask for this after loading all infos. If it was unable to find a buffer
|
||
|
// it will need to know so it can pick the default buffer.
|
||
|
resumer.wasAbleToResume = function() {
|
||
|
return hasResumed;
|
||
|
};
|
||
|
|
||
|
// Clear out the recorded info. Maybe we'll do this when the user chooses to disconnect?
|
||
|
resumer.clear = function() {
|
||
|
record(undefined);
|
||
|
};
|
||
|
|
||
|
return resumer;
|
||
|
}]);
|
||
|
})();
|