diff --git a/web/.gitignore b/web/.gitignore deleted file mode 100644 index 8d8e757e..00000000 --- a/web/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# IDEs and editors -/.idea -/.vscode - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/web/public/index.html b/web/public/index.html index b992636c..232b0cf9 100644 --- a/web/public/index.html +++ b/web/public/index.html @@ -15,7 +15,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/web/public/static/img/basic-notification.png b/web/public/static/img/basic-notification.png deleted file mode 100644 index 3a8a245d..00000000 Binary files a/web/public/static/img/basic-notification.png and /dev/null differ diff --git a/web/src/app/Notifier.js b/web/src/app/Notifier.js index 10bfc50d..3129edfc 100644 --- a/web/src/app/Notifier.js +++ b/web/src/app/Notifier.js @@ -1,6 +1,7 @@ import {formatMessage, formatTitleWithDefault, openUrl, playSound, topicShortUrl} from "./utils"; import prefs from "./Prefs"; import subscriptionManager from "./SubscriptionManager"; +import logo from "../img/ntfy.png"; class Notifier { async notify(subscriptionId, notification, onClickFallback) { @@ -17,7 +18,7 @@ class Notifier { console.log(`[Notifier, ${shortUrl}] Displaying notification ${notification.id}: ${message}`); const n = new Notification(title, { body: message, - icon: '/static/img/favicon.png' + icon: logo }); if (notification.click) { n.onclick = (e) => openUrl(notification.click); @@ -32,7 +33,6 @@ class Notifier { await playSound(sound); } catch (e) { console.log(`[Notifier, ${shortUrl}] Error playing audio`, e); - // FIXME show no sound allowed popup } } } diff --git a/web/src/app/Prefs.js b/web/src/app/Prefs.js index 6acc8f96..b444c6f8 100644 --- a/web/src/app/Prefs.js +++ b/web/src/app/Prefs.js @@ -7,7 +7,7 @@ class Prefs { async sound() { const sound = await db.prefs.get('sound'); - return (sound) ? sound.value : "mixkit-correct-answer-tone"; + return (sound) ? sound.value : "ding"; } async setMinPriority(minPriority) { diff --git a/web/src/app/utils.js b/web/src/app/utils.js index 64dd9bea..08979fb2 100644 --- a/web/src/app/utils.js +++ b/web/src/app/utils.js @@ -1,4 +1,11 @@ import {rawEmojis} from "./emojis"; +import beep from "../sounds/beep.mp3"; +import juntos from "../sounds/juntos.mp3"; +import pristine from "../sounds/pristine.mp3"; +import ding from "../sounds/ding.mp3"; +import dadum from "../sounds/dadum.mp3"; +import pop from "../sounds/pop.mp3"; +import popSwoosh from "../sounds/pop-swoosh.mp3"; export const topicUrl = (baseUrl, topic) => `${baseUrl}/${topic}`; export const topicUrlWs = (baseUrl, topic) => `${topicUrl(baseUrl, topic)}/ws` @@ -34,7 +41,6 @@ const toEmojis = (tags) => { else return tags.filter(tag => tag in emojis).map(tag => emojis[tag]); } - export const formatTitleWithDefault = (m, fallback) => { if (m.title) { return formatTitle(m); @@ -123,8 +129,18 @@ export const subscriptionRoute = (subscription) => { return `/${subscription.topic}`; } +export const sounds = { + "beep": beep, + "juntos": juntos, + "pristine": pristine, + "ding": ding, + "dadum": dadum, + "pop": pop, + "pop-swoosh": popSwoosh +}; + export const playSound = async (sound) => { - const audio = new Audio(`/static/sounds/${sound}.mp3`); + const audio = new Audio(sounds[sound]); return audio.play(); }; diff --git a/web/src/components/ActionBar.js b/web/src/components/ActionBar.js index 32b32d98..0dcf6963 100644 --- a/web/src/components/ActionBar.js +++ b/web/src/components/ActionBar.js @@ -20,6 +20,7 @@ import NotificationsIcon from '@mui/icons-material/Notifications'; import NotificationsOffIcon from '@mui/icons-material/NotificationsOff'; import api from "../app/Api"; import subscriptionManager from "../app/SubscriptionManager"; +import logo from "../img/ntfy.svg" const ActionBar = (props) => { const location = useLocation(); @@ -44,7 +45,7 @@ const ActionBar = (props) => { > - { > - + Send test notification Clear all notifications Unsubscribe diff --git a/web/src/components/Notifications.js b/web/src/components/Notifications.js index 4ee471bb..652a40c5 100644 --- a/web/src/components/Notifications.js +++ b/web/src/components/Notifications.js @@ -21,6 +21,16 @@ import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import subscriptionManager from "../app/SubscriptionManager"; import InfiniteScroll from "react-infinite-scroll-component"; +import fileApp from "../img/file-app.svg"; +import fileAudio from "../img/file-audio.svg"; +import fileDocument from "../img/file-document.svg"; +import fileImage from "../img/file-image.svg"; +import fileVideo from "../img/file-video.svg"; +import priority1 from "../img/priority-1.svg"; +import priority2 from "../img/priority-2.svg"; +import priority4 from "../img/priority-4.svg"; +import priority5 from "../img/priority-5.svg"; +import logoOutline from "../img/ntfy-outline.svg"; const Notifications = (props) => { if (props.mode === "all") { @@ -113,7 +123,7 @@ const NotificationItem = (props) => { {date} {[1,2,4,5].includes(notification.priority) && {`Priority} @@ -139,6 +149,13 @@ const NotificationItem = (props) => { ); } +const priorityFiles = { + 1: priority1, + 2: priority2, + 4: priority4, + 5: priority5 +}; + const Attachment = (props) => { const attachment = props.attachment; const expired = attachment.expires && attachment.expires < Date.now()/1000; @@ -218,7 +235,7 @@ const Image = (props) => { <> setOpen(true)} sx={{ @@ -239,7 +256,7 @@ const Image = (props) => { { const type = props.type; let imageFile; if (!type) { - imageFile = 'file-document.svg'; + imageFile = fileDocument; } else if (type.startsWith('image/')) { - imageFile = 'file-image.svg'; + imageFile = fileImage; } else if (type.startsWith('video/')) { - imageFile = 'file-video.svg'; + imageFile = fileVideo; } else if (type.startsWith('audio/')) { - imageFile = 'file-audio.svg'; + imageFile = fileAudio; } else if (type === "application/vnd.android.package-archive") { - imageFile = 'file-app.svg'; + imageFile = fileApp; } else { - imageFile = 'file-document.svg'; + imageFile = fileDocument; } return ( { return ( - No notifications
+ No notifications
You haven't received any notifications for this topic yet.
@@ -317,7 +334,7 @@ const NoNotificationsWithoutSubscription = (props) => { return ( - No notifications
+ No notifications
You haven't received any notifications.
@@ -342,7 +359,7 @@ const NoSubscriptions = () => { return ( - No topics
+ No topics
It looks like you don't have any subscriptions yet.
diff --git a/web/src/components/Preferences.js b/web/src/components/Preferences.js index a9b4e874..ef4b7fcb 100644 --- a/web/src/components/Preferences.js +++ b/web/src/components/Preferences.js @@ -75,12 +75,12 @@ const Sound = () => { diff --git a/web/public/static/img/file-app.svg b/web/src/img/file-app.svg similarity index 100% rename from web/public/static/img/file-app.svg rename to web/src/img/file-app.svg diff --git a/web/public/static/img/file-audio.svg b/web/src/img/file-audio.svg similarity index 100% rename from web/public/static/img/file-audio.svg rename to web/src/img/file-audio.svg diff --git a/web/public/static/img/file-document.svg b/web/src/img/file-document.svg similarity index 100% rename from web/public/static/img/file-document.svg rename to web/src/img/file-document.svg diff --git a/web/public/static/img/file-image.svg b/web/src/img/file-image.svg similarity index 100% rename from web/public/static/img/file-image.svg rename to web/src/img/file-image.svg diff --git a/web/public/static/img/file-video.svg b/web/src/img/file-video.svg similarity index 100% rename from web/public/static/img/file-video.svg rename to web/src/img/file-video.svg diff --git a/web/public/static/img/ntfy-outline.svg b/web/src/img/ntfy-outline.svg similarity index 100% rename from web/public/static/img/ntfy-outline.svg rename to web/src/img/ntfy-outline.svg diff --git a/web/src/img/ntfy.png b/web/src/img/ntfy.png new file mode 100644 index 00000000..92312fea Binary files /dev/null and b/web/src/img/ntfy.png differ diff --git a/web/public/static/img/ntfy.svg b/web/src/img/ntfy.svg similarity index 100% rename from web/public/static/img/ntfy.svg rename to web/src/img/ntfy.svg diff --git a/web/public/static/img/priority-1.svg b/web/src/img/priority-1.svg similarity index 100% rename from web/public/static/img/priority-1.svg rename to web/src/img/priority-1.svg diff --git a/web/public/static/img/priority-2.svg b/web/src/img/priority-2.svg similarity index 100% rename from web/public/static/img/priority-2.svg rename to web/src/img/priority-2.svg diff --git a/web/public/static/img/priority-4.svg b/web/src/img/priority-4.svg similarity index 100% rename from web/public/static/img/priority-4.svg rename to web/src/img/priority-4.svg diff --git a/web/public/static/img/priority-5.svg b/web/src/img/priority-5.svg similarity index 100% rename from web/public/static/img/priority-5.svg rename to web/src/img/priority-5.svg diff --git a/web/public/static/sounds/beep.mp3 b/web/src/sounds/beep.mp3 similarity index 100% rename from web/public/static/sounds/beep.mp3 rename to web/src/sounds/beep.mp3 diff --git a/web/public/static/sounds/mixkit-software-interface-start.mp3 b/web/src/sounds/dadum.mp3 similarity index 100% rename from web/public/static/sounds/mixkit-software-interface-start.mp3 rename to web/src/sounds/dadum.mp3 diff --git a/web/public/static/sounds/mixkit-correct-answer-tone.mp3 b/web/src/sounds/ding.mp3 similarity index 100% rename from web/public/static/sounds/mixkit-correct-answer-tone.mp3 rename to web/src/sounds/ding.mp3 diff --git a/web/public/static/sounds/juntos.mp3 b/web/src/sounds/juntos.mp3 similarity index 100% rename from web/public/static/sounds/juntos.mp3 rename to web/src/sounds/juntos.mp3 diff --git a/web/public/static/sounds/mixkit-message-pop-alert.mp3 b/web/src/sounds/pop-swoosh.mp3 similarity index 100% rename from web/public/static/sounds/mixkit-message-pop-alert.mp3 rename to web/src/sounds/pop-swoosh.mp3 diff --git a/web/public/static/sounds/mixkit-long-pop.mp3 b/web/src/sounds/pop.mp3 similarity index 100% rename from web/public/static/sounds/mixkit-long-pop.mp3 rename to web/src/sounds/pop.mp3 diff --git a/web/public/static/sounds/pristine.mp3 b/web/src/sounds/pristine.mp3 similarity index 100% rename from web/public/static/sounds/pristine.mp3 rename to web/src/sounds/pristine.mp3