notifications status in settings
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
1389bfe1ed
commit
933e891b37
@ -36,7 +36,7 @@ export default function BadgeList({ badges }: { badges: TaggedNostrEvent[] }) {
|
|||||||
{showModal && (
|
{showModal && (
|
||||||
<Modal id="badges" className="reactions-modal" onClose={() => setShowModal(false)}>
|
<Modal id="badges" className="reactions-modal" onClose={() => setShowModal(false)}>
|
||||||
<div className="reactions-view">
|
<div className="reactions-view">
|
||||||
<CloseButton onClick={() => setShowModal(false)} />
|
<CloseButton className="absolute right-2 top-2" onClick={() => setShowModal(false)} />
|
||||||
<div className="reactions-header">
|
<div className="reactions-header">
|
||||||
<h2>
|
<h2>
|
||||||
<FormattedMessage defaultMessage="Badges" id="h8XMJL" />
|
<FormattedMessage defaultMessage="Badges" id="h8XMJL" />
|
||||||
|
@ -1,39 +1,128 @@
|
|||||||
import "./Preferences.css";
|
|
||||||
|
|
||||||
import { FormattedMessage } from "react-intl";
|
import { FormattedMessage } from "react-intl";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import Icon from "@/Icons/Icon";
|
||||||
import useLogin from "@/Hooks/useLogin";
|
import useLogin from "@/Hooks/useLogin";
|
||||||
import { updatePreferences } from "@/Login";
|
import { subscribeToNotifications } from "@/Notifications";
|
||||||
import { useLocale } from "@/IntlProvider";
|
import useEventPublisher from "@/Hooks/useEventPublisher";
|
||||||
|
import messages from "./messages";
|
||||||
|
|
||||||
|
const StatusIndicator = ({ status, enabledMessage, disabledMessage }) => {
|
||||||
|
return status ? (
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Icon name="check" size={20} className="text-green-500 mr-2" />
|
||||||
|
<FormattedMessage {...enabledMessage} />
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Icon name="close" size={20} className="text-red-500 mr-2" />
|
||||||
|
<FormattedMessage {...disabledMessage} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const PreferencesPage = () => {
|
const PreferencesPage = () => {
|
||||||
const { id, perf } = useLogin(s => ({ id: s.id, perf: s.appData.item.preferences }));
|
const login = useLogin();
|
||||||
const { lang } = useLocale();
|
const { publisher } = useEventPublisher();
|
||||||
|
const [serviceWorkerReady, setServiceWorkerReady] = useState(false);
|
||||||
|
const hasNotificationsApi = "Notification" in window;
|
||||||
|
const [notificationsAllowed, setNotificationsAllowed] = useState(
|
||||||
|
hasNotificationsApi && Notification.permission === "granted",
|
||||||
|
);
|
||||||
|
const [subscribedToPush, setSubscribedToPush] = useState(false);
|
||||||
|
const allGood = !login.readonly && hasNotificationsApi && notificationsAllowed && serviceWorkerReady;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if ("serviceWorker" in navigator) {
|
||||||
|
navigator.serviceWorker.ready.then(registration => {
|
||||||
|
if (registration.active) {
|
||||||
|
setServiceWorkerReady(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const trySubscribePush = async () => {
|
||||||
|
try {
|
||||||
|
if (allGood && publisher && !subscribedToPush) {
|
||||||
|
await subscribeToNotifications(publisher);
|
||||||
|
setSubscribedToPush(true);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
trySubscribePush();
|
||||||
|
}, [allGood, publisher]);
|
||||||
|
|
||||||
|
const requestNotificationPermission = () => {
|
||||||
|
Notification.requestPermission().then(permission => {
|
||||||
|
const allowed = permission === "granted";
|
||||||
|
setNotificationsAllowed(allowed);
|
||||||
|
if (!allowed) {
|
||||||
|
alert("Please allow notifications in your browser settings and try again.");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!login.publicKey) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="preferences flex flex-col g24">
|
<div className="flex flex-col">
|
||||||
<h3>
|
<h3>
|
||||||
<FormattedMessage defaultMessage="Notifications" id="NAidKb" />
|
<FormattedMessage defaultMessage="Notifications" id="NAidKb" />
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div className="flex justify-between w-max">
|
<h4>
|
||||||
<h4>
|
<FormattedMessage defaultMessage="Status" id="tzMNF3" />
|
||||||
<FormattedMessage defaultMessage="Language" id="y1Z3or" />
|
</h4>
|
||||||
</h4>
|
|
||||||
<div>
|
<div className="flex flex-col space-y-4">
|
||||||
<select
|
<StatusIndicator
|
||||||
value={lang}
|
status={!login.readonly}
|
||||||
onChange={e =>
|
enabledMessage={messages.HasWriteAccess}
|
||||||
updatePreferences(id, {
|
disabledMessage={messages.NoWriteAccess}
|
||||||
...perf,
|
/>
|
||||||
language: e.target.value,
|
<StatusIndicator
|
||||||
})
|
status={hasNotificationsApi}
|
||||||
}
|
enabledMessage={messages.NotificationsApiEnabled}
|
||||||
style={{ textTransform: "capitalize" }}>
|
disabledMessage={messages.NotificationsApiDisabled}
|
||||||
<option value={1}>asdf</option>
|
/>
|
||||||
</select>
|
<div className="flex items-center gap-2">
|
||||||
|
<StatusIndicator
|
||||||
|
status={notificationsAllowed}
|
||||||
|
enabledMessage={messages.NotificationsAllowed}
|
||||||
|
disabledMessage={messages.NotificationsNotAllowed}
|
||||||
|
/>
|
||||||
|
{hasNotificationsApi && !notificationsAllowed && (
|
||||||
|
<button onClick={requestNotificationPermission}>
|
||||||
|
<FormattedMessage defaultMessage="Allow" id="y/bmsG" />
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<StatusIndicator
|
||||||
|
status={serviceWorkerReady}
|
||||||
|
enabledMessage={messages.ServiceWorkerRunning}
|
||||||
|
disabledMessage={messages.ServiceWorkerNotRunning}
|
||||||
|
/>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<StatusIndicator
|
||||||
|
status={subscribedToPush}
|
||||||
|
enabledMessage={messages.SubscribedToPush}
|
||||||
|
disabledMessage={messages.NotSubscribedToPush}
|
||||||
|
/>
|
||||||
|
{allGood && !subscribedToPush && (
|
||||||
|
<button onClick={trySubscribePush}>
|
||||||
|
<FormattedMessage defaultMessage="Subscribe" id="gczcC5" />
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default PreferencesPage;
|
export default PreferencesPage;
|
||||||
|
@ -39,13 +39,11 @@ const SettingsIndex = () => {
|
|||||||
{ icon: "shield-tick", message: <FormattedMessage defaultMessage="Moderation" id="wofVHy" />, path: "moderation" },
|
{ icon: "shield-tick", message: <FormattedMessage defaultMessage="Moderation" id="wofVHy" />, path: "moderation" },
|
||||||
{ icon: "badge", message: <FormattedMessage defaultMessage="Nostr Address" id="9pMqYs" />, path: "handle" },
|
{ icon: "badge", message: <FormattedMessage defaultMessage="Nostr Address" id="9pMqYs" />, path: "handle" },
|
||||||
{ icon: "gear", message: <FormattedMessage defaultMessage="Preferences" id="PCSt5T" />, path: "preferences" },
|
{ icon: "gear", message: <FormattedMessage defaultMessage="Preferences" id="PCSt5T" />, path: "preferences" },
|
||||||
/*
|
|
||||||
{
|
{
|
||||||
icon: "bell-outline",
|
icon: "bell-outline",
|
||||||
message: <FormattedMessage defaultMessage="Notifications" id="NAidKb" />,
|
message: <FormattedMessage defaultMessage="Notifications" id="NAidKb" />,
|
||||||
path: "notifications",
|
path: "notifications",
|
||||||
},
|
},
|
||||||
*/
|
|
||||||
{ icon: "wallet", message: <FormattedMessage defaultMessage="Wallet" id="3yk8fB" />, path: "wallet" },
|
{ icon: "wallet", message: <FormattedMessage defaultMessage="Wallet" id="3yk8fB" />, path: "wallet" },
|
||||||
{ icon: "heart", message: <FormattedMessage defaultMessage="Donate" id="2IFGap" />, path: "/donate" },
|
{ icon: "heart", message: <FormattedMessage defaultMessage="Donate" id="2IFGap" />, path: "/donate" },
|
||||||
{ icon: "hard-drive", message: <FormattedMessage defaultMessage="Cache" id="DBiVK1" />, path: "cache" },
|
{ icon: "hard-drive", message: <FormattedMessage defaultMessage="Cache" id="DBiVK1" />, path: "cache" },
|
||||||
|
@ -66,4 +66,14 @@ export default defineMessages({
|
|||||||
ReactionEmoji: { defaultMessage: "Reaction emoji", id: "eHAneD" },
|
ReactionEmoji: { defaultMessage: "Reaction emoji", id: "eHAneD" },
|
||||||
ReactionEmojiHelp: { defaultMessage: "Emoji to send when reactiong to a note", id: "gDzDRs" },
|
ReactionEmojiHelp: { defaultMessage: "Emoji to send when reactiong to a note", id: "gDzDRs" },
|
||||||
SocialGraph: { defaultMessage: "Social Graph", id: "CzHZoc" },
|
SocialGraph: { defaultMessage: "Social Graph", id: "CzHZoc" },
|
||||||
|
HasWriteAccess: { defaultMessage: "Logged in with write access", id: "+UjDmN" },
|
||||||
|
NoWriteAccess: { defaultMessage: "Logged in with read-only access", id: "bMphls" },
|
||||||
|
NotificationsApiEnabled: { defaultMessage: "Notifications API Enabled", id: "5PRWs7" },
|
||||||
|
NotificationsApiDisabled: { defaultMessage: "Notifications API Disabled", id: "qcJFEJ" },
|
||||||
|
NotificationsAllowed: { defaultMessage: "Notifications Allowed", id: "nGGDsi" },
|
||||||
|
NotificationsNotAllowed: { defaultMessage: "Notifications Not Allowed", id: "J1iLmb" },
|
||||||
|
ServiceWorkerRunning: { defaultMessage: "Service Worker Running", id: "bG00/W" },
|
||||||
|
ServiceWorkerNotRunning: { defaultMessage: "Service Worker Not Running", id: "RDha9y" },
|
||||||
|
SubscribedToPush: { defaultMessage: "Subscribed to Push", id: 'G3A56c' },
|
||||||
|
NotSubscribedToPush: { defaultMessage: "Not Subscribed to Push", id: 'd2ebEu' },
|
||||||
});
|
});
|
||||||
|
@ -5,6 +5,9 @@
|
|||||||
"+PzQ9Y": {
|
"+PzQ9Y": {
|
||||||
"defaultMessage": "Payout Now"
|
"defaultMessage": "Payout Now"
|
||||||
},
|
},
|
||||||
|
"+UjDmN": {
|
||||||
|
"defaultMessage": "Logged in with write access"
|
||||||
|
},
|
||||||
"+Vxixo": {
|
"+Vxixo": {
|
||||||
"defaultMessage": "Secret Group Chat"
|
"defaultMessage": "Secret Group Chat"
|
||||||
},
|
},
|
||||||
@ -207,6 +210,9 @@
|
|||||||
"5CB6zB": {
|
"5CB6zB": {
|
||||||
"defaultMessage": "Zap Splits"
|
"defaultMessage": "Zap Splits"
|
||||||
},
|
},
|
||||||
|
"5PRWs7": {
|
||||||
|
"defaultMessage": "Notifications API Enabled"
|
||||||
|
},
|
||||||
"5oTnfy": {
|
"5oTnfy": {
|
||||||
"defaultMessage": "Buy Handle"
|
"defaultMessage": "Buy Handle"
|
||||||
},
|
},
|
||||||
@ -494,6 +500,9 @@
|
|||||||
"G1BGCg": {
|
"G1BGCg": {
|
||||||
"defaultMessage": "Select Wallet"
|
"defaultMessage": "Select Wallet"
|
||||||
},
|
},
|
||||||
|
"G3A56c": {
|
||||||
|
"defaultMessage": "Subscribed to Push"
|
||||||
|
},
|
||||||
"GFOoEE": {
|
"GFOoEE": {
|
||||||
"defaultMessage": "Salt"
|
"defaultMessage": "Salt"
|
||||||
},
|
},
|
||||||
@ -579,6 +588,9 @@
|
|||||||
"J+dIsA": {
|
"J+dIsA": {
|
||||||
"defaultMessage": "Subscriptions"
|
"defaultMessage": "Subscriptions"
|
||||||
},
|
},
|
||||||
|
"J1iLmb": {
|
||||||
|
"defaultMessage": "Notifications Not Allowed"
|
||||||
|
},
|
||||||
"J2HeQ+": {
|
"J2HeQ+": {
|
||||||
"defaultMessage": "Use commas to separate words e.g. word1, word2, word3"
|
"defaultMessage": "Use commas to separate words e.g. word1, word2, word3"
|
||||||
},
|
},
|
||||||
@ -777,6 +789,9 @@
|
|||||||
"R81upa": {
|
"R81upa": {
|
||||||
"defaultMessage": "People you follow"
|
"defaultMessage": "People you follow"
|
||||||
},
|
},
|
||||||
|
"RDha9y": {
|
||||||
|
"defaultMessage": "Service Worker Not Running"
|
||||||
|
},
|
||||||
"RSr2uB": {
|
"RSr2uB": {
|
||||||
"defaultMessage": "Username must only contain lowercase letters and numbers"
|
"defaultMessage": "Username must only contain lowercase letters and numbers"
|
||||||
},
|
},
|
||||||
@ -1000,9 +1015,15 @@
|
|||||||
"b5vAk0": {
|
"b5vAk0": {
|
||||||
"defaultMessage": "Your handle will act like a lightning address and will redirect to your chosen LNURL or Lightning address"
|
"defaultMessage": "Your handle will act like a lightning address and will redirect to your chosen LNURL or Lightning address"
|
||||||
},
|
},
|
||||||
|
"bG00/W": {
|
||||||
|
"defaultMessage": "Service Worker Running"
|
||||||
|
},
|
||||||
"bLZL5a": {
|
"bLZL5a": {
|
||||||
"defaultMessage": "Get Address"
|
"defaultMessage": "Get Address"
|
||||||
},
|
},
|
||||||
|
"bMphls": {
|
||||||
|
"defaultMessage": "Logged in with read-only access"
|
||||||
|
},
|
||||||
"bQdA2k": {
|
"bQdA2k": {
|
||||||
"defaultMessage": "Sensitive Content"
|
"defaultMessage": "Sensitive Content"
|
||||||
},
|
},
|
||||||
@ -1055,6 +1076,9 @@
|
|||||||
"d+6YsV": {
|
"d+6YsV": {
|
||||||
"defaultMessage": "Lists to mute:"
|
"defaultMessage": "Lists to mute:"
|
||||||
},
|
},
|
||||||
|
"d2ebEu": {
|
||||||
|
"defaultMessage": "Not Subscribed to Push"
|
||||||
|
},
|
||||||
"d6CyG5": {
|
"d6CyG5": {
|
||||||
"defaultMessage": "History",
|
"defaultMessage": "History",
|
||||||
"description": "Wallet transation history"
|
"description": "Wallet transation history"
|
||||||
@ -1333,6 +1357,9 @@
|
|||||||
"nGBrvw": {
|
"nGBrvw": {
|
||||||
"defaultMessage": "Bookmarks"
|
"defaultMessage": "Bookmarks"
|
||||||
},
|
},
|
||||||
|
"nGGDsi": {
|
||||||
|
"defaultMessage": "Notifications Allowed"
|
||||||
|
},
|
||||||
"nihgfo": {
|
"nihgfo": {
|
||||||
"defaultMessage": "Listen to this article"
|
"defaultMessage": "Listen to this article"
|
||||||
},
|
},
|
||||||
@ -1387,6 +1414,9 @@
|
|||||||
"qZsKBR": {
|
"qZsKBR": {
|
||||||
"defaultMessage": "Renew {tier}"
|
"defaultMessage": "Renew {tier}"
|
||||||
},
|
},
|
||||||
|
"qcJFEJ": {
|
||||||
|
"defaultMessage": "Notifications API Disabled"
|
||||||
|
},
|
||||||
"qdGuQo": {
|
"qdGuQo": {
|
||||||
"defaultMessage": "Your Private Key Is (do not share this with anyone)"
|
"defaultMessage": "Your Private Key Is (do not share this with anyone)"
|
||||||
},
|
},
|
||||||
@ -1459,6 +1489,9 @@
|
|||||||
"ttxS0b": {
|
"ttxS0b": {
|
||||||
"defaultMessage": "Supporter Badge"
|
"defaultMessage": "Supporter Badge"
|
||||||
},
|
},
|
||||||
|
"tzMNF3": {
|
||||||
|
"defaultMessage": "Status"
|
||||||
|
},
|
||||||
"u+LyXc": {
|
"u+LyXc": {
|
||||||
"defaultMessage": "Interactions"
|
"defaultMessage": "Interactions"
|
||||||
},
|
},
|
||||||
@ -1578,6 +1611,9 @@
|
|||||||
"xybOUv": {
|
"xybOUv": {
|
||||||
"defaultMessage": "FAN"
|
"defaultMessage": "FAN"
|
||||||
},
|
},
|
||||||
|
"y/bmsG": {
|
||||||
|
"defaultMessage": "Subscribe"
|
||||||
|
},
|
||||||
"y1Z3or": {
|
"y1Z3or": {
|
||||||
"defaultMessage": "Language"
|
"defaultMessage": "Language"
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"+D82kt": "Are you sure you want to repost: {id}",
|
"+D82kt": "Are you sure you want to repost: {id}",
|
||||||
"+PzQ9Y": "Payout Now",
|
"+PzQ9Y": "Payout Now",
|
||||||
|
"+UjDmN": "Logged in with write access",
|
||||||
"+Vxixo": "Secret Group Chat",
|
"+Vxixo": "Secret Group Chat",
|
||||||
"+aZY2h": "Zap Type",
|
"+aZY2h": "Zap Type",
|
||||||
"+tShPg": "following",
|
"+tShPg": "following",
|
||||||
@ -68,6 +69,7 @@
|
|||||||
"4rYCjn": "Note to Self",
|
"4rYCjn": "Note to Self",
|
||||||
"5BVs2e": "zap",
|
"5BVs2e": "zap",
|
||||||
"5CB6zB": "Zap Splits",
|
"5CB6zB": "Zap Splits",
|
||||||
|
"5PRWs7": "Notifications API Enabled",
|
||||||
"5oTnfy": "Buy Handle",
|
"5oTnfy": "Buy Handle",
|
||||||
"5u6iEc": "Transfer to Pubkey",
|
"5u6iEc": "Transfer to Pubkey",
|
||||||
"5vMmmR": "Usernames are not unique on Nostr. The nostr address is your unique human-readable address that is unique to you upon registration.",
|
"5vMmmR": "Usernames are not unique on Nostr. The nostr address is your unique human-readable address that is unique to you upon registration.",
|
||||||
@ -163,6 +165,7 @@
|
|||||||
"FvanT6": "Accounts",
|
"FvanT6": "Accounts",
|
||||||
"G/yZLu": "Remove",
|
"G/yZLu": "Remove",
|
||||||
"G1BGCg": "Select Wallet",
|
"G1BGCg": "Select Wallet",
|
||||||
|
"G3A56c": "Subscribed to Push",
|
||||||
"GFOoEE": "Salt",
|
"GFOoEE": "Salt",
|
||||||
"GL8aXW": "Bookmarks ({n})",
|
"GL8aXW": "Bookmarks ({n})",
|
||||||
"GQPtfk": "Join Stream",
|
"GQPtfk": "Join Stream",
|
||||||
@ -191,6 +194,7 @@
|
|||||||
"IoQq+a": "Click here to load anyway",
|
"IoQq+a": "Click here to load anyway",
|
||||||
"Ix8l+B": "Trending Notes",
|
"Ix8l+B": "Trending Notes",
|
||||||
"J+dIsA": "Subscriptions",
|
"J+dIsA": "Subscriptions",
|
||||||
|
"J1iLmb": "Notifications Not Allowed",
|
||||||
"J2HeQ+": "Use commas to separate words e.g. word1, word2, word3",
|
"J2HeQ+": "Use commas to separate words e.g. word1, word2, word3",
|
||||||
"JCIgkj": "Username",
|
"JCIgkj": "Username",
|
||||||
"JGrt9q": "Send sats to {name}",
|
"JGrt9q": "Send sats to {name}",
|
||||||
@ -256,6 +260,7 @@
|
|||||||
"Qxv0B2": "You currently have {number} sats in your zap pool.",
|
"Qxv0B2": "You currently have {number} sats in your zap pool.",
|
||||||
"R/6nsx": "Subscription",
|
"R/6nsx": "Subscription",
|
||||||
"R81upa": "People you follow",
|
"R81upa": "People you follow",
|
||||||
|
"RDha9y": "Service Worker Not Running",
|
||||||
"RSr2uB": "Username must only contain lowercase letters and numbers",
|
"RSr2uB": "Username must only contain lowercase letters and numbers",
|
||||||
"RahCRH": "Expired",
|
"RahCRH": "Expired",
|
||||||
"RfhLwC": "By: {author}",
|
"RfhLwC": "By: {author}",
|
||||||
@ -329,7 +334,9 @@
|
|||||||
"aWpBzj": "Show more",
|
"aWpBzj": "Show more",
|
||||||
"b12Goz": "Mnemonic",
|
"b12Goz": "Mnemonic",
|
||||||
"b5vAk0": "Your handle will act like a lightning address and will redirect to your chosen LNURL or Lightning address",
|
"b5vAk0": "Your handle will act like a lightning address and will redirect to your chosen LNURL or Lightning address",
|
||||||
|
"bG00/W": "Service Worker Running",
|
||||||
"bLZL5a": "Get Address",
|
"bLZL5a": "Get Address",
|
||||||
|
"bMphls": "Logged in with read-only access",
|
||||||
"bQdA2k": "Sensitive Content",
|
"bQdA2k": "Sensitive Content",
|
||||||
"bep9C3": "Public Key",
|
"bep9C3": "Public Key",
|
||||||
"bfvyfs": "Anon",
|
"bfvyfs": "Anon",
|
||||||
@ -347,6 +354,7 @@
|
|||||||
"cuV2gK": "name is registered",
|
"cuV2gK": "name is registered",
|
||||||
"cyR7Kh": "Back",
|
"cyR7Kh": "Back",
|
||||||
"d+6YsV": "Lists to mute:",
|
"d+6YsV": "Lists to mute:",
|
||||||
|
"d2ebEu": "Not Subscribed to Push",
|
||||||
"d6CyG5": "History",
|
"d6CyG5": "History",
|
||||||
"d7d0/x": "LN Address",
|
"d7d0/x": "LN Address",
|
||||||
"d8gpCh": "Try to use less than 5 hashtags to stay on topic 🙏",
|
"d8gpCh": "Try to use less than 5 hashtags to stay on topic 🙏",
|
||||||
@ -439,6 +447,7 @@
|
|||||||
"n1Whvj": "Switch",
|
"n1Whvj": "Switch",
|
||||||
"nDejmx": "Unblock",
|
"nDejmx": "Unblock",
|
||||||
"nGBrvw": "Bookmarks",
|
"nGBrvw": "Bookmarks",
|
||||||
|
"nGGDsi": "Notifications Allowed",
|
||||||
"nihgfo": "Listen to this article",
|
"nihgfo": "Listen to this article",
|
||||||
"nwZXeh": "{n} blocked",
|
"nwZXeh": "{n} blocked",
|
||||||
"o7e+nJ": "{n} followers",
|
"o7e+nJ": "{n} followers",
|
||||||
@ -457,6 +466,7 @@
|
|||||||
"qMx1sA": "Default Zap amount",
|
"qMx1sA": "Default Zap amount",
|
||||||
"qUJTsT": "Blocked",
|
"qUJTsT": "Blocked",
|
||||||
"qZsKBR": "Renew {tier}",
|
"qZsKBR": "Renew {tier}",
|
||||||
|
"qcJFEJ": "Notifications API Disabled",
|
||||||
"qdGuQo": "Your Private Key Is (do not share this with anyone)",
|
"qdGuQo": "Your Private Key Is (do not share this with anyone)",
|
||||||
"qfmMQh": "This note has been muted",
|
"qfmMQh": "This note has been muted",
|
||||||
"qkvYUb": "Add to Profile",
|
"qkvYUb": "Add to Profile",
|
||||||
@ -481,6 +491,7 @@
|
|||||||
"thnRpU": "Getting NIP-05 verified can help:",
|
"thnRpU": "Getting NIP-05 verified can help:",
|
||||||
"tjpYlr": "Relay Metrics",
|
"tjpYlr": "Relay Metrics",
|
||||||
"ttxS0b": "Supporter Badge",
|
"ttxS0b": "Supporter Badge",
|
||||||
|
"tzMNF3": "Status",
|
||||||
"u+LyXc": "Interactions",
|
"u+LyXc": "Interactions",
|
||||||
"u/vOPu": "Paid",
|
"u/vOPu": "Paid",
|
||||||
"u4bHcR": "Check out the code here: {link}",
|
"u4bHcR": "Check out the code here: {link}",
|
||||||
@ -520,6 +531,7 @@
|
|||||||
"xl4s/X": "Additional Terms:",
|
"xl4s/X": "Additional Terms:",
|
||||||
"xmcVZ0": "Search",
|
"xmcVZ0": "Search",
|
||||||
"xybOUv": "FAN",
|
"xybOUv": "FAN",
|
||||||
|
"y/bmsG": "Subscribe",
|
||||||
"y1Z3or": "Language",
|
"y1Z3or": "Language",
|
||||||
"yCLnBC": "LNURL or Lightning Address",
|
"yCLnBC": "LNURL or Lightning Address",
|
||||||
"yNBPJp": "Help fund the development of {site}",
|
"yNBPJp": "Help fund the development of {site}",
|
||||||
|
Loading…
Reference in New Issue
Block a user