blob: a2ca0b79d0dd8539971210b5e7eddf629b322a83 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
//'use strict';
module.exports = Franz => class Mastodon extends Franz {
constructor(...args) {
let _temp;
//
let serviceCache = {};
// send service store for webview
setInterval(() => {
if (!window.franz) { // not present(near equal not initialize)
return;
}
const services = window.franz.stores.services;
// filter this recipe class
const instancedServices = services.all.filter(service => service.recipe.constructor === this.constructor);
// send
instancedServices.forEach(service => {
let updated = false;
serviceCache[service.id] = Object.keys(service).reduce((r, key) => {
if (!service[key] || Object !== service[key].constructor) {
updated = updated || serviceCache[key] !== service[key];
r[key] = service[key];
}
return r;
}, serviceCache[service.id] || {});
if (updated) {
service.webview.send('-service-update', service);
}
});
}, 1000);
return _temp = super(...args), this.events = {
}, _temp;
}
async validateUrl(url) {
try {
const res = await window.fetch(`${url}/api/v1/instance/`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
});
const data = await res.json();
// check url field in API response
return Object.hasOwnProperty.call(data, 'uri');
} catch (err) {
console.error(err);
}
return false;
}
};
|