Skip to content

Commit

Permalink
ES6: migrated "links" (#963)
Browse files Browse the repository at this point in the history
  • Loading branch information
herrmannplatz authored Mar 29, 2017
1 parent 3e05bb5 commit 9d3d1c6
Show file tree
Hide file tree
Showing 12 changed files with 332 additions and 268 deletions.
1 change: 1 addition & 0 deletions .eslintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ globals:
moment: true
pako: true
Raygun: true
twttr: true
wire: true
z: true

Expand Down
19 changes: 0 additions & 19 deletions app/script/links/LinkPreviewBlackList.coffee

This file was deleted.

40 changes: 40 additions & 0 deletions app/script/links/LinkPreviewBlackList.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Wire
* Copyright (C) 2017 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*/

'use strict';

window.z = window.z || {};
window.z.links = z.links || {};

z.links.LinkPreviewBlackList = (function() {

const BLACKLIST = [
'soundcloud',
'spotify',
'youtu[.]?be',
'vimeo',
];

return {
is_blacklisted(url) {
return new RegExp(BLACKLIST.join('|')).test(url);
},
};

})();
45 changes: 0 additions & 45 deletions app/script/links/LinkPreviewError.coffee

This file was deleted.

56 changes: 56 additions & 0 deletions app/script/links/LinkPreviewError.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* Wire
* Copyright (C) 2017 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*/

'use strict';

window.z = window.z || {};
window.z.links = z.links || {};

z.links.LinkPreviewError = class LinkPreviewError extends Error {
constructor(type) {
super();
this.name = this.constructor.name;
this.stack = (new Error()).stack;
this.type = type || z.links.LinkPreviewError.TYPE.UNKNOWN;

switch (this.type) {
case z.links.LinkPreviewError.TYPE.NOT_SUPPORTED:
this.message = 'Your client cannot render link previews using Open Graph data.';
break;
case z.links.LinkPreviewError.TYPE.UNSUPPORTED_TYPE:
this.message = 'Open Graph data from the given link does not provide necessary attributes.';
break;
case z.links.LinkPreviewError.TYPE.NO_DATA_AVAILABLE:
this.message = 'Link does not provide Open Graph data.';
break;
default:
this.message = 'Unknown LinkPreviewError';
}
}

static get TYPE() {
return {
BLACKLISTED: 'z.links.LinkPreviewError.TYPE.BLACKLISTED',
NO_DATA_AVAILABLE: 'z.links.LinkPreviewError.TYPE.NO_DATA_AVAILABLE',
NOT_SUPPORTED: 'z.links.LinkPreviewError.TYPE.NOT_SUPPORTED',
UNSUPPORTED_TYPE: 'z.links.LinkPreviewError.TYPE.UNSUPPORTED_TYPE',
UNKNOWN: 'z.links.LinkPreviewError.TYPE.UNKNOWN',
};
}
};
45 changes: 0 additions & 45 deletions app/script/links/LinkPreviewHelpers.coffee

This file was deleted.

53 changes: 53 additions & 0 deletions app/script/links/LinkPreviewHelpers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Wire
* Copyright (C) 2017 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*/

'use strict';

window.z = window.z || {};
window.z.links = z.links || {};

z.links.LinkPreviewHelpers = {

/*
Check if the text contains only one link
@param {string} text
*/
contains_only_link(text) {
text = text.trim();
const urls = twttr.txt.extractUrls(text);
return (urls.length === 1) && (urls[0] === text);
},

/*
Get first link and link offset for given text.
@param {string} text
*/
get_first_link_with_offset(text) {
const links = twttr.txt.extractUrls(text);
const first_link = links[0];

if (first_link != null) {
const link_offset = text.indexOf(first_link);
return [first_link, link_offset];
}
},

};
50 changes: 0 additions & 50 deletions app/script/links/LinkPreviewProtoBuilder.coffee

This file was deleted.

50 changes: 50 additions & 0 deletions app/script/links/LinkPreviewProtoBuilder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Wire
* Copyright (C) 2017 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*/

'use strict';

window.z = window.z || {};
window.z.links = z.links || {};

z.links.LinkPreviewProtoBuilder = {

/*
Create Protocol Buffers message for link previews.
Open Graph data can be validated through: https://developers.facebook.com/tools/debug/
@param {Object} data - open graph data
@param {string} url - link entered by the user
@param {number} offset - starting index of the link
@returns {z.proto.LinkPreview}
*/
build_from_open_graph_data(data, url, offset = 0) {
if (_.isEmpty(data)) {
return;
}

data.url = data.url || url;

if (data.title && data.url) {
const preview = new z.proto.Article(data.url, data.title, data.description);
return new z.proto.LinkPreview(url, offset, preview);
}
},

};
Loading

0 comments on commit 9d3d1c6

Please sign in to comment.