Merge pull request #750 from nimbleghost/web-improvements
Fix suppressed eslint issuespull/754/head
commit
3101f93d22
|
@ -61,9 +61,7 @@ class ConnectionManager {
|
|||
const { connectionId } = subscription;
|
||||
const added = !this.connections.get(connectionId);
|
||||
if (added) {
|
||||
const { baseUrl } = subscription;
|
||||
const { topic } = subscription;
|
||||
const { user } = subscription;
|
||||
const { baseUrl, topic, user } = subscription;
|
||||
const since = subscription.last;
|
||||
const connection = new Connection(
|
||||
connectionId,
|
||||
|
|
|
@ -21,15 +21,16 @@ class Poller {
|
|||
async pollAll() {
|
||||
console.log(`[Poller] Polling all subscriptions`);
|
||||
const subscriptions = await subscriptionManager.all();
|
||||
for (const s of subscriptions) {
|
||||
|
||||
await Promise.all(
|
||||
subscriptions.map(async (s) => {
|
||||
try {
|
||||
// TODO(eslint): Switch to Promise.all
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await this.poll(s);
|
||||
} catch (e) {
|
||||
console.log(`[Poller] Error polling ${s.id}`, e);
|
||||
}
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
async poll(subscription) {
|
||||
|
|
|
@ -5,13 +5,12 @@ class SubscriptionManager {
|
|||
/** All subscriptions, including "new count"; this is a JOIN, see https://dexie.org/docs/API-Reference#joining */
|
||||
async all() {
|
||||
const subscriptions = await db.subscriptions.toArray();
|
||||
await Promise.all(
|
||||
subscriptions.map(async (s) => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
s.new = await db.notifications.where({ subscriptionId: s.id, new: 1 }).count();
|
||||
})
|
||||
return Promise.all(
|
||||
subscriptions.map(async (s) => ({
|
||||
...s,
|
||||
new: await db.notifications.where({ subscriptionId: s.id, new: 1 }).count(),
|
||||
}))
|
||||
);
|
||||
return subscriptions;
|
||||
}
|
||||
|
||||
async get(subscriptionId) {
|
||||
|
@ -40,33 +39,31 @@ class SubscriptionManager {
|
|||
console.log(`[SubscriptionManager] Syncing subscriptions from remote`, remoteSubscriptions);
|
||||
|
||||
// Add remote subscriptions
|
||||
const remoteIds = []; // = topicUrl(baseUrl, topic)
|
||||
for (let i = 0; i < remoteSubscriptions.length; i += 1) {
|
||||
const remote = remoteSubscriptions[i];
|
||||
// TODO(eslint): Switch to Promise.all
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const remoteIds = await Promise.all(
|
||||
remoteSubscriptions.map(async (remote) => {
|
||||
const local = await this.add(remote.base_url, remote.topic, false);
|
||||
const reservation = remoteReservations?.find((r) => remote.base_url === config.base_url && remote.topic === r.topic) || null;
|
||||
// TODO(eslint): Switch to Promise.all
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
|
||||
await this.update(local.id, {
|
||||
displayName: remote.display_name, // May be undefined
|
||||
reservation, // May be null!
|
||||
});
|
||||
remoteIds.push(local.id);
|
||||
}
|
||||
|
||||
return local.id;
|
||||
})
|
||||
);
|
||||
|
||||
// Remove local subscriptions that do not exist remotely
|
||||
const localSubscriptions = await db.subscriptions.toArray();
|
||||
for (let i = 0; i < localSubscriptions.length; i += 1) {
|
||||
const local = localSubscriptions[i];
|
||||
|
||||
await Promise.all(
|
||||
localSubscriptions.map(async (local) => {
|
||||
const remoteExists = remoteIds.includes(local.id);
|
||||
if (!local.internal && !remoteExists) {
|
||||
// TODO(eslint): Switch to Promise.all
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await this.remove(local.id);
|
||||
}
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
async updateState(subscriptionId, state) {
|
||||
|
@ -108,9 +105,12 @@ class SubscriptionManager {
|
|||
return false;
|
||||
}
|
||||
try {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
notification.new = 1; // New marker (used for bubble indicator); cannot be boolean; Dexie index limitation
|
||||
await db.notifications.add({ ...notification, subscriptionId }); // FIXME consider put() for double tab
|
||||
await db.notifications.add({
|
||||
...notification,
|
||||
subscriptionId,
|
||||
// New marker (used for bubble indicator); cannot be boolean; Dexie index limitation
|
||||
new: 1,
|
||||
}); // FIXME consider put() for double tab
|
||||
await db.subscriptions.update(subscriptionId, {
|
||||
last: notification.id,
|
||||
});
|
||||
|
|
|
@ -118,10 +118,10 @@ export const maybeWithBearerAuth = (headers, token) => {
|
|||
export const withBasicAuth = (headers, username, password) => ({ ...headers, Authorization: basicAuth(username, password) });
|
||||
|
||||
export const maybeWithAuth = (headers, user) => {
|
||||
if (user && user.password) {
|
||||
if (user?.password) {
|
||||
return withBasicAuth(headers, user.username, user.password);
|
||||
}
|
||||
if (user && user.token) {
|
||||
if (user?.token) {
|
||||
return withBearerAuth(headers, user.token);
|
||||
}
|
||||
return headers;
|
||||
|
@ -139,17 +139,14 @@ export const maybeAppendActionErrors = (message, notification) => {
|
|||
};
|
||||
|
||||
export const shuffle = (arr) => {
|
||||
let j;
|
||||
let x;
|
||||
for (let index = arr.length - 1; index > 0; index -= 1) {
|
||||
j = Math.floor(Math.random() * (index + 1));
|
||||
x = arr[index];
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
arr[index] = arr[j];
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
arr[j] = x;
|
||||
const returnArr = [...arr];
|
||||
|
||||
for (let index = returnArr.length - 1; index > 0; index -= 1) {
|
||||
const j = Math.floor(Math.random() * (index + 1));
|
||||
[returnArr[index], returnArr[j]] = [returnArr[j], returnArr[index]];
|
||||
}
|
||||
return arr;
|
||||
|
||||
return returnArr;
|
||||
};
|
||||
|
||||
export const splitNoEmpty = (s, delimiter) =>
|
||||
|
|
|
@ -127,17 +127,7 @@ const Category = (props) => {
|
|||
);
|
||||
};
|
||||
|
||||
const emojiMatches = (emoji, words) => {
|
||||
if (words.length === 0) {
|
||||
return true;
|
||||
}
|
||||
for (const word of words) {
|
||||
if (emoji.searchBase.indexOf(word) === -1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
const emojiMatches = (emoji, words) => words.length === 0 || words.some((word) => emoji.searchBase.includes(word));
|
||||
|
||||
const Emoji = (props) => {
|
||||
const { emoji } = props;
|
||||
|
|
|
@ -436,15 +436,10 @@ const ACTION_LABEL_SUFFIX = {
|
|||
};
|
||||
|
||||
const updateActionStatus = (notification, action, progress, error) => {
|
||||
// TODO(eslint): Fix by spreading? Does the code depend on the change, though?
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
notification.actions = notification.actions.map((a) => {
|
||||
if (a.id !== action.id) {
|
||||
return a;
|
||||
}
|
||||
return { ...a, progress, error };
|
||||
subscriptionManager.updateNotification({
|
||||
...notification,
|
||||
actions: notification.actions.map((a) => (a.id === action.id ? { ...a, progress, error } : a)),
|
||||
});
|
||||
subscriptionManager.updateNotification(notification);
|
||||
};
|
||||
|
||||
const performHttpAction = async (notification, action) => {
|
||||
|
|
Loading…
Reference in New Issue