summaryrefslogtreecommitdiff
path: root/client/js
diff options
context:
space:
mode:
authorrr- <rr-@sakuya.pl>2016-11-11 22:35:58 +0100
committerrr- <rr-@sakuya.pl>2016-11-11 22:35:58 +0100
commit143a015473b37b5028fa71af059d2fd487e97712 (patch)
treea64523f68ec2f60365107254a810d56d074c6a75 /client/js
parent20a5a58734fb43f030457dd82857d0420959739e (diff)
client/posts: control over video loops on upload
Also loop videos by default
Diffstat (limited to 'client/js')
-rw-r--r--client/js/controllers/post_upload_controller.js1
-rw-r--r--client/js/views/post_upload_view.js42
2 files changed, 27 insertions, 16 deletions
diff --git a/client/js/controllers/post_upload_controller.js b/client/js/controllers/post_upload_controller.js
index 3ec86a9..02b45cf 100644
--- a/client/js/controllers/post_upload_controller.js
+++ b/client/js/controllers/post_upload_controller.js
@@ -51,6 +51,7 @@ class PostUploadController {
return promise.then(() => {
let post = new Post();
post.safety = uploadable.safety;
+ post.flags = uploadable.flags;
if (uploadable.url) {
post.newContentUrl = uploadable.url;
} else {
diff --git a/client/js/views/post_upload_view.js b/client/js/views/post_upload_view.js
index fd60f4e..b260381 100644
--- a/client/js/views/post_upload_view.js
+++ b/client/js/views/post_upload_view.js
@@ -20,10 +20,17 @@ function _mimeTypeToPostType(mimeType) {
}[mimeType] || 'unknown';
}
+function _listen(rootNode, selector, eventType, handler) {
+ for (let node of rootNode.querySelectorAll(selector)) {
+ node.addEventListener(eventType, e => handler(e));
+ }
+}
+
class Uploadable extends events.EventTarget {
constructor() {
super();
this.safety = 'safe';
+ this.flags = ['loop'];
this.anonymous = false;
this.order = globalOrder;
globalOrder++;
@@ -288,6 +295,13 @@ class PostUploadView extends events.EventTarget {
uploadable.anonymous = e.target.checked;
}
+ _evtLoopVideoCheckboxChange(e, uploadable) {
+ uploadable.flags = uploadable.flags.filter(f => f !== 'loop');
+ if (e.target.checked) {
+ uploadable.flags.push('loop');
+ }
+ }
+
_normalizeUploadablesOrder() {
let sortedUploadables = this._getSortedUploadables();
for (let i = 0; i < sortedUploadables.length; i++) {
@@ -316,23 +330,19 @@ class PostUploadView extends events.EventTarget {
{}, this._ctx, {uploadable: uploadable}));
this._listNode.appendChild(rowNode);
- for (let radioboxNode of rowNode.querySelectorAll('.safety input')) {
- radioboxNode.addEventListener(
- 'change', e => this._evtSafetyRadioboxChange(e, uploadable));
- }
-
- const anonymousCheckboxNode = rowNode.querySelector('.anonymous input');
- if (anonymousCheckboxNode) {
- anonymousCheckboxNode.addEventListener(
- 'change', e => this._evtAnonymityCheckboxChange(e, uploadable));
- }
+ _listen(rowNode, '.safety input', 'change',
+ e => this._evtSafetyRadioboxChange(e, uploadable));
+ _listen(rowNode, '.anonymous input', 'change',
+ e => this._evtAnonymityCheckboxChange(e, uploadable));
+ _listen(rowNode, '.loop-video input', 'change',
+ e => this._evtLoopVideoCheckboxChange(e, uploadable));
- rowNode.querySelector('a.remove').addEventListener(
- 'click', e => this._evtRemoveClick(e, uploadable));
- rowNode.querySelector('a.move-up').addEventListener(
- 'click', e => this._evtMoveUpClick(e, uploadable));
- rowNode.querySelector('a.move-down').addEventListener(
- 'click', e => this._evtMoveDownClick(e, uploadable));
+ _listen(rowNode, 'a.remove', 'click',
+ e => this._evtRemoveClick(e, uploadable));
+ _listen(rowNode, 'a.move-up', 'click',
+ e => this._evtMoveUpClick(e, uploadable));
+ _listen(rowNode, 'a.move-down', 'click',
+ e => this._evtMoveDownClick(e, uploadable));
uploadable.rowNode = rowNode;
}