This commit is contained in:
parent
2c414c4a56
commit
9cae8ec6eb
@ -6,44 +6,48 @@ import { LoginSession } from "@/Login";
|
|||||||
import Icon from "@/Icons/Icon";
|
import Icon from "@/Icons/Icon";
|
||||||
|
|
||||||
export class BackupKeyTask extends BaseUITask {
|
export class BackupKeyTask extends BaseUITask {
|
||||||
id = "backup-key";
|
id = "backup-key";
|
||||||
noBaseStyle = true;
|
noBaseStyle = true;
|
||||||
|
|
||||||
check(_: MetadataCache, session: LoginSession): boolean {
|
check(_: MetadataCache, session: LoginSession): boolean {
|
||||||
return !this.state.muted && session.type == "private_key";
|
return !this.state.muted && session.type == "private_key";
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div className="p card">
|
<div className="p card">
|
||||||
<div className="flex g12 bg-superdark p24 br">
|
<div className="flex g12 bg-superdark p24 br">
|
||||||
<div>
|
<div>
|
||||||
<div className="p12 bg-dark circle">
|
<div className="p12 bg-dark circle">
|
||||||
<Icon name="key" size={21} />
|
<Icon name="key" size={21} />
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-col g8">
|
|
||||||
<div className="font-semibold text-xl">
|
|
||||||
<FormattedMessage defaultMessage="Be sure to back up your keys!" id="1UWegE" />
|
|
||||||
</div>
|
|
||||||
<small>
|
|
||||||
<FormattedMessage defaultMessage="No keys, no {app}, There is no way to reset it if you don't back up. It only takes a minute." id="YR2I9M" values={{
|
|
||||||
app: CONFIG.appNameCapitalized
|
|
||||||
}} />
|
|
||||||
</small>
|
|
||||||
<div className="flex g8">
|
|
||||||
<Link to="/settings/keys">
|
|
||||||
<button>
|
|
||||||
<FormattedMessage defaultMessage="Back up now" id="rMgF34" />
|
|
||||||
</button>
|
|
||||||
</Link>
|
|
||||||
<button className="secondary" onClick={() => this.mute()}>
|
|
||||||
<FormattedMessage defaultMessage="Already backed up" id="j9xbzF" />
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
</div>
|
||||||
}
|
<div className="flex flex-col g8">
|
||||||
|
<div className="font-semibold text-xl">
|
||||||
|
<FormattedMessage defaultMessage="Be sure to back up your keys!" id="1UWegE" />
|
||||||
|
</div>
|
||||||
|
<small>
|
||||||
|
<FormattedMessage
|
||||||
|
defaultMessage="No keys, no {app}, There is no way to reset it if you don't back up. It only takes a minute."
|
||||||
|
id="YR2I9M"
|
||||||
|
values={{
|
||||||
|
app: CONFIG.appNameCapitalized,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</small>
|
||||||
|
<div className="flex g8">
|
||||||
|
<Link to="/settings/keys">
|
||||||
|
<button>
|
||||||
|
<FormattedMessage defaultMessage="Back up now" id="rMgF34" />
|
||||||
|
</button>
|
||||||
|
</Link>
|
||||||
|
<button className="secondary" onClick={() => this.mute()}>
|
||||||
|
<FormattedMessage defaultMessage="Already backed up" id="j9xbzF" />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,18 +17,15 @@ class TaskStore extends ExternalStore<Array<UITask>> {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
const AllTasks: Array<UITask> = [
|
const AllTasks: Array<UITask> = [new BackupKeyTask(), new Nip5Task(), new DonateTask(), new NoticeZapPoolDefault()];
|
||||||
new BackupKeyTask(),
|
|
||||||
new Nip5Task(),
|
|
||||||
new DonateTask(),
|
|
||||||
new NoticeZapPoolDefault()
|
|
||||||
];
|
|
||||||
if (CONFIG.features.subscriptions) {
|
if (CONFIG.features.subscriptions) {
|
||||||
AllTasks.push(new RenewSubTask());
|
AllTasks.push(new RenewSubTask());
|
||||||
}
|
}
|
||||||
AllTasks.forEach(a => a.load(() => {
|
AllTasks.forEach(a =>
|
||||||
this.notifyChange()
|
a.load(() => {
|
||||||
}));
|
this.notifyChange();
|
||||||
|
}),
|
||||||
|
);
|
||||||
this.#tasks = AllTasks;
|
this.#tasks = AllTasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,7 +38,10 @@ const AllTasks = new TaskStore();
|
|||||||
export const TaskList = () => {
|
export const TaskList = () => {
|
||||||
const session = useLogin();
|
const session = useLogin();
|
||||||
const user = useUserProfile(session.publicKey);
|
const user = useUserProfile(session.publicKey);
|
||||||
const tasks = useSyncExternalStore(c => AllTasks.hook(c), () => AllTasks.snapshot());
|
const tasks = useSyncExternalStore(
|
||||||
|
c => AllTasks.hook(c),
|
||||||
|
() => AllTasks.snapshot(),
|
||||||
|
);
|
||||||
|
|
||||||
function muteTask(t: UITask) {
|
function muteTask(t: UITask) {
|
||||||
t.mute();
|
t.mute();
|
||||||
@ -49,23 +49,25 @@ export const TaskList = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="task-list">
|
<div className="task-list">
|
||||||
{tasks.filter(a => (user ? a.check(user, session) : false)).map(a => {
|
{tasks
|
||||||
if (a.noBaseStyle) {
|
.filter(a => (user ? a.check(user, session) : false))
|
||||||
return a.render();
|
.map(a => {
|
||||||
} else {
|
if (a.noBaseStyle) {
|
||||||
return (
|
return a.render();
|
||||||
<div key={a.id} className="card">
|
} else {
|
||||||
<div className="header">
|
return (
|
||||||
<Icon name="lightbulb" />
|
<div key={a.id} className="card">
|
||||||
<div className="close" onClick={() => muteTask(a)}>
|
<div className="header">
|
||||||
<Icon name="close" size={14} />
|
<Icon name="lightbulb" />
|
||||||
|
<div className="close" onClick={() => muteTask(a)}>
|
||||||
|
<Icon name="close" size={14} />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{a.render()}
|
||||||
</div>
|
</div>
|
||||||
{a.render()}
|
);
|
||||||
</div>
|
}
|
||||||
);
|
})}
|
||||||
}
|
|
||||||
})}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -93,6 +93,9 @@
|
|||||||
"1R43+L": {
|
"1R43+L": {
|
||||||
"defaultMessage": "Enter Nostr Wallet Connect config"
|
"defaultMessage": "Enter Nostr Wallet Connect config"
|
||||||
},
|
},
|
||||||
|
"1UWegE": {
|
||||||
|
"defaultMessage": "Be sure to back up your keys!"
|
||||||
|
},
|
||||||
"1c4YST": {
|
"1c4YST": {
|
||||||
"defaultMessage": "Connected to: {node} 🎉"
|
"defaultMessage": "Connected to: {node} 🎉"
|
||||||
},
|
},
|
||||||
@ -907,6 +910,9 @@
|
|||||||
"YDURw6": {
|
"YDURw6": {
|
||||||
"defaultMessage": "Service URL"
|
"defaultMessage": "Service URL"
|
||||||
},
|
},
|
||||||
|
"YR2I9M": {
|
||||||
|
"defaultMessage": "No keys, no {app}, There is no way to reset it if you don't back up. It only takes a minute."
|
||||||
|
},
|
||||||
"YXA3AH": {
|
"YXA3AH": {
|
||||||
"defaultMessage": "Enable reactions"
|
"defaultMessage": "Enable reactions"
|
||||||
},
|
},
|
||||||
@ -1158,6 +1164,9 @@
|
|||||||
"izWS4J": {
|
"izWS4J": {
|
||||||
"defaultMessage": "Unfollow"
|
"defaultMessage": "Unfollow"
|
||||||
},
|
},
|
||||||
|
"j9xbzF": {
|
||||||
|
"defaultMessage": "Already backed up"
|
||||||
|
},
|
||||||
"jA3OE/": {
|
"jA3OE/": {
|
||||||
"defaultMessage": "{n,plural,=1{{n} sat} other{{n} sats}}"
|
"defaultMessage": "{n,plural,=1{{n} sat} other{{n} sats}}"
|
||||||
},
|
},
|
||||||
@ -1343,6 +1352,9 @@
|
|||||||
"r5srDR": {
|
"r5srDR": {
|
||||||
"defaultMessage": "Enter wallet password"
|
"defaultMessage": "Enter wallet password"
|
||||||
},
|
},
|
||||||
|
"rMgF34": {
|
||||||
|
"defaultMessage": "Back up now"
|
||||||
|
},
|
||||||
"rT14Ow": {
|
"rT14Ow": {
|
||||||
"defaultMessage": "Add Relays"
|
"defaultMessage": "Add Relays"
|
||||||
},
|
},
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
"1H4Keq": "{n} users",
|
"1H4Keq": "{n} users",
|
||||||
"1Mo59U": "Are you sure you want to remove this note from bookmarks?",
|
"1Mo59U": "Are you sure you want to remove this note from bookmarks?",
|
||||||
"1R43+L": "Enter Nostr Wallet Connect config",
|
"1R43+L": "Enter Nostr Wallet Connect config",
|
||||||
|
"1UWegE": "Be sure to back up your keys!",
|
||||||
"1c4YST": "Connected to: {node} 🎉",
|
"1c4YST": "Connected to: {node} 🎉",
|
||||||
"1nYUGC": "{n} Following",
|
"1nYUGC": "{n} Following",
|
||||||
"1o2BgB": "Check Signatures",
|
"1o2BgB": "Check Signatures",
|
||||||
@ -298,6 +299,7 @@
|
|||||||
"Xopqkl": "Your default zap amount is {number} sats, example values are calculated from this.",
|
"Xopqkl": "Your default zap amount is {number} sats, example values are calculated from this.",
|
||||||
"XrSk2j": "Redeem",
|
"XrSk2j": "Redeem",
|
||||||
"YDURw6": "Service URL",
|
"YDURw6": "Service URL",
|
||||||
|
"YR2I9M": "No keys, no {app}, There is no way to reset it if you don't back up. It only takes a minute.",
|
||||||
"YXA3AH": "Enable reactions",
|
"YXA3AH": "Enable reactions",
|
||||||
"Z4BMCZ": "Enter pairing phrase",
|
"Z4BMCZ": "Enter pairing phrase",
|
||||||
"ZKORll": "Activate Now",
|
"ZKORll": "Activate Now",
|
||||||
@ -381,6 +383,7 @@
|
|||||||
"ieGrWo": "Follow",
|
"ieGrWo": "Follow",
|
||||||
"itPgxd": "Profile",
|
"itPgxd": "Profile",
|
||||||
"izWS4J": "Unfollow",
|
"izWS4J": "Unfollow",
|
||||||
|
"j9xbzF": "Already backed up",
|
||||||
"jA3OE/": "{n,plural,=1{{n} sat} other{{n} sats}}",
|
"jA3OE/": "{n,plural,=1{{n} sat} other{{n} sats}}",
|
||||||
"jAmfGl": "Your {site_name} subscription is expired",
|
"jAmfGl": "Your {site_name} subscription is expired",
|
||||||
"jHa/ko": "Clean up your feed",
|
"jHa/ko": "Clean up your feed",
|
||||||
@ -442,6 +445,7 @@
|
|||||||
"qz9fty": "Incorrect pin",
|
"qz9fty": "Incorrect pin",
|
||||||
"r3C4x/": "Software",
|
"r3C4x/": "Software",
|
||||||
"r5srDR": "Enter wallet password",
|
"r5srDR": "Enter wallet password",
|
||||||
|
"rMgF34": "Back up now",
|
||||||
"rT14Ow": "Add Relays",
|
"rT14Ow": "Add Relays",
|
||||||
"rbrahO": "Close",
|
"rbrahO": "Close",
|
||||||
"rfuMjE": "(Default)",
|
"rfuMjE": "(Default)",
|
||||||
|
@ -26,7 +26,7 @@ export default defineConfig({
|
|||||||
name: "snort",
|
name: "snort",
|
||||||
ifGitSHA: true,
|
ifGitSHA: true,
|
||||||
command: "git describe --always --tags",
|
command: "git describe --always --tags",
|
||||||
})
|
}),
|
||||||
],
|
],
|
||||||
assetsInclude: ["**/*.md", "**/*.wasm"],
|
assetsInclude: ["**/*.md", "**/*.wasm"],
|
||||||
build: {
|
build: {
|
||||||
|
Loading…
Reference in New Issue
Block a user