Skip to content
Snippets Groups Projects
Commit 17d1b80e authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Fix minor issue that could lead to multiple loading

parent 78f72e29
Branches
Tags
No related merge requests found
...@@ -65,11 +65,14 @@ class App { ...@@ -65,11 +65,14 @@ class App {
insert(buffer) { insert(buffer) {
this.resultContainer.appendChild(buffer.elem); this.resultContainer.appendChild(buffer.elem);
buffer.addEventListener('loadMore', () => this.bufferLoadMore(buffer)); buffer.addEventListener('loadMore', () => this.bufferLoadMore(buffer));
buffer.addEventListener('loadBefore', (context, initialLoad) => { buffer.addEventListener('loadBefore', context => {
this.contextLoadBefore(buffer, context, initialLoad); this.contextLoadBefore(buffer, context);
}); });
buffer.addEventListener('loadAfter', (context, initialLoad) => { buffer.addEventListener('loadAfter', context => {
this.contextLoadAfter(buffer, context, initialLoad); this.contextLoadAfter(buffer, context);
});
buffer.addEventListener('loadInitial', context => {
this.contextLoadInitial(buffer, context);
}); });
} }
bufferLoadMore(buffer) { bufferLoadMore(buffer) {
...@@ -86,36 +89,51 @@ class App { ...@@ -86,36 +89,51 @@ class App {
buffer.setLoading(false); buffer.setLoading(false);
}); });
} }
contextLoadBefore(buffer, context, initialLoad) { contextLoadBefore(buffer, context) {
if (context.loading && initialLoad !== true) if (context.loading)
return; return;
context.setLoading(true); context.setLoading(true);
const amount = initialLoad ? 4 : 10;
load('web/backlog/', statehandler.parse({ load('web/backlog/', statehandler.parse({
buffer: buffer.id, buffer: buffer.id,
anchor: context.anchorBefore, anchor: context.anchorBefore,
after: 0, after: 0,
before: amount before: 10
})).then(result => { })).then(result => {
context.loadBefore(result.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message))); context.loadBefore(result.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message)));
context.setLoading(false); context.setLoading(false);
}); });
} }
contextLoadAfter(buffer, context, initialLoad) { contextLoadAfter(buffer, context) {
if (context.loading && initialLoad !== true) if (context.loading)
return; return;
context.setLoading(true); context.setLoading(true);
const amount = initialLoad ? 4 : 10;
load('web/backlog/', statehandler.parse({ load('web/backlog/', statehandler.parse({
buffer: buffer.id, buffer: buffer.id,
anchor: context.anchorAfter, anchor: context.anchorAfter,
after: amount, after: 10,
before: 0 before: 0
})).then(result => { })).then(result => {
context.loadAfter(result.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message))); context.loadAfter(result.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message)));
context.setLoading(false); context.setLoading(false);
}); });
} }
contextLoadInitial(buffer, context) {
if (context.loading)
return;
context.setLoading(true);
load('web/backlog/', statehandler.parse({
buffer: buffer.id,
anchor: context.anchorAfter,
after: 4,
before: 4
})).then(result => {
const before = result.filter(msg => msg.id < context.anchorBefore);
const after = result.filter(msg => msg.id > context.anchorAfter);
context.loadBefore(before.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message)));
context.loadAfter(after.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message)));
context.setLoading(false);
});
}
} }
const app = new App(); const app = new App();
document.body.insertBefore(app.elem, document.body.firstChild); document.body.insertBefore(app.elem, document.body.firstChild);
\ No newline at end of file
...@@ -72,11 +72,14 @@ class App { ...@@ -72,11 +72,14 @@ class App {
insert(buffer) { insert(buffer) {
this.resultContainer.appendChild(buffer.elem); this.resultContainer.appendChild(buffer.elem);
buffer.addEventListener("loadMore", () => this.bufferLoadMore(buffer)); buffer.addEventListener("loadMore", () => this.bufferLoadMore(buffer));
buffer.addEventListener("loadBefore", (context, initialLoad) => { buffer.addEventListener("loadBefore", (context) => {
this.contextLoadBefore(buffer, context, initialLoad); this.contextLoadBefore(buffer, context);
}); });
buffer.addEventListener("loadAfter", (context, initialLoad) => { buffer.addEventListener("loadAfter", (context) => {
this.contextLoadAfter(buffer, context, initialLoad); this.contextLoadAfter(buffer, context);
});
buffer.addEventListener("loadInitial", (context) => {
this.contextLoadInitial(buffer, context);
}); });
} }
...@@ -93,39 +96,57 @@ class App { ...@@ -93,39 +96,57 @@ class App {
}); });
} }
contextLoadBefore(buffer, context, initialLoad) { contextLoadBefore(buffer, context) {
if (context.loading && initialLoad !== true) if (context.loading )
return; return;
context.setLoading(true); context.setLoading(true);
const amount = initialLoad ? 4 : 10;
load("web/backlog/", statehandler.parse({ load("web/backlog/", statehandler.parse({
buffer: buffer.id, buffer: buffer.id,
anchor: context.anchorBefore, anchor: context.anchorBefore,
after: 0, after: 0,
before: amount before: 10
})).then((result) => { })).then((result) => {
context.loadBefore(result.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message))); context.loadBefore(result.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message)));
context.setLoading(false); context.setLoading(false);
}); });
} }
contextLoadAfter(buffer, context, initialLoad) { contextLoadAfter(buffer, context) {
if (context.loading && initialLoad !== true) if (context.loading)
return; return;
context.setLoading(true); context.setLoading(true);
const amount = initialLoad ? 4 : 10;
load("web/backlog/", statehandler.parse({ load("web/backlog/", statehandler.parse({
buffer: buffer.id, buffer: buffer.id,
anchor: context.anchorAfter, anchor: context.anchorAfter,
after: amount, after: 10,
before: 0 before: 0
})).then((result) => { })).then((result) => {
context.loadAfter(result.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message))); context.loadAfter(result.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message)));
context.setLoading(false); context.setLoading(false);
}); });
} }
contextLoadInitial(buffer, context) {
if (context.loading)
return;
context.setLoading(true);
load("web/backlog/", statehandler.parse({
buffer: buffer.id,
anchor: context.anchorAfter,
after: 4,
before: 4
})).then((result) => {
const before = result.filter((msg) => msg.id < context.anchorBefore);
const after = result.filter((msg) => msg.id > context.anchorAfter);
context.loadBefore(before.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message)));
context.loadAfter(after.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message)));
context.setLoading(false);
});
}
} }
const app = new App(); const app = new App();
......
...@@ -84,17 +84,14 @@ class Buffer extends Component { ...@@ -84,17 +84,14 @@ class Buffer extends Component {
insert(context) { insert(context) {
let container = this.insertContainerFirst.childElementCount < 4 ? this.insertContainerFirst : this.insertContainer; let container = this.insertContainerFirst.childElementCount < 4 ? this.insertContainerFirst : this.insertContainer;
container.appendChild(context.elem); container.appendChild(context.elem);
context.addEventListener('loadBefore', (context, initialLoad) => { context.addEventListener('loadBefore', context => {
this.sendEvent('loadBefore', [ this.sendEvent('loadBefore', [context]);
context,
initialLoad
]);
}); });
context.addEventListener('loadAfter', (context, initialLoad) => { context.addEventListener('loadAfter', context => {
this.sendEvent('loadAfter', [ this.sendEvent('loadAfter', [context]);
context, });
initialLoad context.addEventListener('loadInitial', context => {
]); this.sendEvent('loadInitial', [context]);
}); });
this.neverLoaded = false; this.neverLoaded = false;
} }
......
...@@ -84,11 +84,14 @@ class Buffer extends Component { ...@@ -84,11 +84,14 @@ class Buffer extends Component {
insert(context) { insert(context) {
let container = (this.insertContainerFirst.childElementCount < 4 ? this.insertContainerFirst : this.insertContainer); let container = (this.insertContainerFirst.childElementCount < 4 ? this.insertContainerFirst : this.insertContainer);
container.appendChild(context.elem); container.appendChild(context.elem);
context.addEventListener("loadBefore", (context, initialLoad) => { context.addEventListener("loadBefore", (context) => {
this.sendEvent("loadBefore", [context, initialLoad]) this.sendEvent("loadBefore", [context])
}); });
context.addEventListener("loadAfter", (context, initialLoad) => { context.addEventListener("loadAfter", (context) => {
this.sendEvent("loadAfter", [context, initialLoad]) this.sendEvent("loadAfter", [context])
});
context.addEventListener("loadInitial", (context) => {
this.sendEvent("loadInitial", [context])
}); });
this.neverLoaded = false; this.neverLoaded = false;
} }
......
...@@ -37,8 +37,7 @@ class Context extends Component { ...@@ -37,8 +37,7 @@ class Context extends Component {
if (focus === undefined) if (focus === undefined)
focus = !this.elem.classList.contains('focus'); focus = !this.elem.classList.contains('focus');
if (this.anchorBefore === this.message.id && this.anchorAfter === this.message.id) { if (this.anchorBefore === this.message.id && this.anchorAfter === this.message.id) {
this.triggerLoadBefore(true); this.triggerloadInitial();
this.triggerLoadAfter(true);
} }
this.elem.classList.toggle('focus', focus); this.elem.classList.toggle('focus', focus);
this.sendEvent('focus', focus); this.sendEvent('focus', focus);
...@@ -52,17 +51,14 @@ class Context extends Component { ...@@ -52,17 +51,14 @@ class Context extends Component {
this.containerAfter.insertBefore(message.elem, this.insertAfterTarget); this.containerAfter.insertBefore(message.elem, this.insertAfterTarget);
this.anchorAfter = message.id; this.anchorAfter = message.id;
} }
triggerLoadBefore(initialLoad) { triggerLoadBefore() {
this.sendEvent('loadBefore', [ this.sendEvent('loadBefore', [this]);
this,
initialLoad === true
]);
} }
triggerLoadAfter(initialLoad) { triggerLoadAfter() {
this.sendEvent('loadAfter', [ this.sendEvent('loadAfter', [this]);
this, }
initialLoad === true triggerloadInitial() {
]); this.sendEvent('loadInitial', [this]);
} }
loadBefore(elements) { loadBefore(elements) {
this.beforeList = elements.concat(this.beforeList); this.beforeList = elements.concat(this.beforeList);
......
...@@ -42,8 +42,7 @@ class Context extends Component { ...@@ -42,8 +42,7 @@ class Context extends Component {
focus = !this.elem.classList.contains("focus"); focus = !this.elem.classList.contains("focus");
if (this.anchorBefore === this.message.id && this.anchorAfter === this.message.id) { if (this.anchorBefore === this.message.id && this.anchorAfter === this.message.id) {
this.triggerLoadBefore(true); this.triggerloadInitial();
this.triggerLoadAfter(true);
} }
this.elem.classList.toggle("focus", focus); this.elem.classList.toggle("focus", focus);
...@@ -61,12 +60,16 @@ class Context extends Component { ...@@ -61,12 +60,16 @@ class Context extends Component {
this.anchorAfter = message.id; this.anchorAfter = message.id;
} }
triggerLoadBefore(initialLoad) { triggerLoadBefore() {
this.sendEvent("loadBefore", [this, initialLoad === true]); this.sendEvent("loadBefore", [this]);
} }
triggerLoadAfter(initialLoad) { triggerLoadAfter() {
this.sendEvent("loadAfter", [this, initialLoad === true]); this.sendEvent("loadAfter", [this]);
}
triggerloadInitial() {
this.sendEvent("loadInitial", [this]);
} }
loadBefore(elements) { loadBefore(elements) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment