Fix title setter logic and separate it from UI

This commit is contained in:
Caleb James DeLisle 2017-08-17 19:58:48 +02:00
parent ec87f3f897
commit cf6d8c83b2
5 changed files with 25 additions and 24 deletions

View File

@ -16,6 +16,7 @@ define([], function () {
var dirty = true;
var changeHandlers = [];
var lazyChangeHandlers = [];
var titleChangeHandlers = [];
var rememberedTitle;
@ -50,13 +51,14 @@ define([], function () {
var lazyUserStr = JSON.stringify(metadataLazyObj.users[meta.user.netfluxId]);
dirty = false;
if (lazy || lazyUserStr !== JSON.stringify(meta.user)) {
metadataLazyObj.users = mdo;
metadataLazyObj = JSON.parse(JSON.stringify(metadataObj));
lazyChangeHandlers.forEach(function (f) { f(); });
}
if (metadataObj.title !== rememberedTitle) {
console.log("Title update\n" + metadataObj.title + '\n');
rememberedTitle = metadataObj.title;
titleChangeHandlers.forEach(function (f) { f(metadataObj.title); });
}
changeHandlers.forEach(function (f) { f(); });
@ -113,6 +115,7 @@ define([], function () {
getMetadataLazy: function () {
return metadataLazyObj;
},
onTitleChange: function (f) { titleChangeHandlers.push(f); },
onChange: function (f) { changeHandlers.push(f); },
onChangeLazy: function (f) { lazyChangeHandlers.push(f); },
isConnected : function () {

View File

@ -15,9 +15,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
define([
'/common/metadata-manager.js',
'/bower_components/chainpad/chainpad.dist.js'
], function (MetadataMgr) {
], function () {
var ChainPad = window.ChainPad;
var module = { exports: {} };
@ -39,14 +38,13 @@ define([
var logLevel = typeof(config.logLevel) !== 'undefined'? config.logLevel : 1;
var readOnly = config.readOnly || false;
var sframeChan = config.sframeChan;
var metadataMgr = config.metadataMgr;
config = undefined;
var chainpad;
var myID;
var isReady = false;
var metadataMgr = MetadataMgr.create(sframeChan);
sframeChan.on('EV_RT_DISCONNECT', function () {
isReady = false;
onConnectionChange({ state: false });

View File

@ -50,19 +50,9 @@ define(['jquery'], function ($) {
cb = cb || $.noop;
if (newTitle === exp.title) { return; }
// Change the title now, and set it back to the old value if there is an error
var oldTitle = exp.title;
Common.setPadTitleInDrive(newTitle, function (err, data) {
if (err) {
console.log("Couldn't set pad title");
console.error(err);
updateLocalTitle(oldTitle);
return void cb(err);
}
metadataMgr.updateTitle(newTitle);
//onLocal();
cb(null, data);
if (!$title) { return; }
});
//var oldTitle = exp.title;
Common.updateTitle(newTitle, cb)
//cb(null, newTitle);
};
// TODO not needed?

View File

@ -2,9 +2,10 @@ define([
'/bower_components/nthen/index.js',
'/common/sframe-chainpad-netflux-inner.js',
'/common/sframe-channel.js',
'/common/sframe-common-title.js'
'/common/sframe-common-title.js',
'/common/metadata-manager.js',
], function (nThen, CpNfInner, SFrameChannel, Title) {
], function (nThen, CpNfInner, SFrameChannel, Title, MetadataMgr) {
// Chainpad Netflux Inner
var funcs = {};
@ -13,6 +14,7 @@ define([
funcs.startRealtime = function (options) {
if (ctx.cpNfInner) { return ctx.cpNfInner; }
options.sframeChan = ctx.sframeChan;
options.metadataMgr = ctx.metadataMgr;
ctx.cpNfInner = CpNfInner.start(options);
ctx.cpNfInner.metadataMgr.onChangeLazy(options.onLocal);
return ctx.cpNfInner;
@ -23,10 +25,10 @@ define([
return ctx.cpNfInner.metadataMgr.getPrivateData().accountName;
};
funcs.setPadTitleInDrive = function (title, cb) {
ctx.sframeChan.query('Q_SET_PAD_TITLE_IN_DRIVE', title, function (err) {
if (cb) { cb(err, title); }
});
var titleUpdated;
funcs.updateTitle = function (title, cb) {
ctx.metadataMgr.updateTitle(title);
titleUpdated = cb;
};
// Title module
@ -49,6 +51,13 @@ define([
SFrameChannel.create(window.top, waitFor(function (sfc) { ctx.sframeChan = sfc; }));
// CpNfInner.start() should be here....
}).nThen(function () {
ctx.metadataMgr = MetadataMgr.create(ctx.sframeChan);
ctx.metadataMgr.onTitleChange(function (title) {
ctx.sframeChan.query('Q_SET_PAD_TITLE_IN_DRIVE', title, function (err) {
if (err) { return; }
if (titleUpdated) { titleUpdated(undefined, title); }
});
});
cb(funcs);
});
} };

View File

@ -725,6 +725,7 @@ define([
realtimeOptions.onError = onConnectError;
var onLocal = realtimeOptions.onLocal = function () {
console.log('onlocal');
if (initializing) { return; }
if (isHistoryMode) { return; }
if (readOnly) { return; }