export database, missing wallet functionality
This commit is contained in:
parent
9f60e3d7ec
commit
b0c2a73146
@ -32,6 +32,7 @@ export default {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const AllOff = createExample(TestedComponent, {
|
export const AllOff = createExample(TestedComponent, {
|
||||||
|
onDownloadDatabase: async () => "this is the content of the database",
|
||||||
operations: [
|
operations: [
|
||||||
{
|
{
|
||||||
type: PendingTaskType.ExchangeUpdate,
|
type: PendingTaskType.ExchangeUpdate,
|
||||||
|
@ -16,15 +16,19 @@
|
|||||||
|
|
||||||
import { NotificationType } from "@gnu-taler/taler-util";
|
import { NotificationType } from "@gnu-taler/taler-util";
|
||||||
import { PendingTaskInfo } from "@gnu-taler/taler-wallet-core";
|
import { PendingTaskInfo } from "@gnu-taler/taler-wallet-core";
|
||||||
|
import { format } from "date-fns";
|
||||||
import { Fragment, h, VNode } from "preact";
|
import { Fragment, h, VNode } from "preact";
|
||||||
|
import { useState } from "preact/hooks";
|
||||||
import { Diagnostics } from "../components/Diagnostics";
|
import { Diagnostics } from "../components/Diagnostics";
|
||||||
import { NotifyUpdateFadeOut } from "../components/styled/index";
|
import { NotifyUpdateFadeOut } from "../components/styled/index";
|
||||||
|
import { Time } from "../components/Time";
|
||||||
import { useAsyncAsHook } from "../hooks/useAsyncAsHook";
|
import { useAsyncAsHook } from "../hooks/useAsyncAsHook";
|
||||||
import { useDiagnostics } from "../hooks/useDiagnostics";
|
import { useDiagnostics } from "../hooks/useDiagnostics";
|
||||||
import * as wxApi from "../wxApi";
|
import * as wxApi from "../wxApi";
|
||||||
|
|
||||||
export function DeveloperPage(): VNode {
|
export function DeveloperPage(): VNode {
|
||||||
const [status, timedOut] = useDiagnostics();
|
const [status, timedOut] = useDiagnostics();
|
||||||
|
|
||||||
const listenAllEvents = Array.from<NotificationType>({ length: 1 });
|
const listenAllEvents = Array.from<NotificationType>({ length: 1 });
|
||||||
listenAllEvents.includes = () => true; // includes every event
|
listenAllEvents.includes = () => true; // includes every event
|
||||||
const operationsResponse = useAsyncAsHook(
|
const operationsResponse = useAsyncAsHook(
|
||||||
@ -39,19 +43,33 @@ export function DeveloperPage(): VNode {
|
|||||||
? []
|
? []
|
||||||
: operationsResponse.response.pendingOperations;
|
: operationsResponse.response.pendingOperations;
|
||||||
|
|
||||||
return <View status={status} timedOut={timedOut} operations={operations} />;
|
return <View status={status}
|
||||||
|
timedOut={timedOut}
|
||||||
|
operations={operations}
|
||||||
|
onDownloadDatabase={async () => "content"}
|
||||||
|
/>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
status: any;
|
status: any;
|
||||||
timedOut: boolean;
|
timedOut: boolean;
|
||||||
operations: PendingTaskInfo[];
|
operations: PendingTaskInfo[];
|
||||||
|
onDownloadDatabase: () => Promise<string>;
|
||||||
}
|
}
|
||||||
|
|
||||||
function hashObjectId(o: any): string {
|
function hashObjectId(o: any): string {
|
||||||
return JSON.stringify(o);
|
return JSON.stringify(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function View({ status, timedOut, operations }: Props): VNode {
|
export function View({ status, timedOut, operations, onDownloadDatabase }: Props): VNode {
|
||||||
|
const [downloadedDatabase, setDownloadedDatabase] = useState<{time: Date; content: string}|undefined>(undefined)
|
||||||
|
async function onExportDatabase(): Promise<void> {
|
||||||
|
const content = await onDownloadDatabase()
|
||||||
|
setDownloadedDatabase({
|
||||||
|
time: new Date(),
|
||||||
|
content
|
||||||
|
})
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<p>Debug tools:</p>
|
<p>Debug tools:</p>
|
||||||
@ -61,6 +79,11 @@ export function View({ status, timedOut, operations }: Props): VNode {
|
|||||||
|
|
||||||
<button onClick={confirmReset}>reset</button>
|
<button onClick={confirmReset}>reset</button>
|
||||||
<br />
|
<br />
|
||||||
|
<button onClick={onExportDatabase}>export database</button>
|
||||||
|
{downloadedDatabase && <div>
|
||||||
|
Database exported at <Time timestamp={{t_ms: downloadedDatabase.time.getTime()}} format="yyyy/MM/dd HH:mm:ss" /> <a href={`data:text/plain;charset=utf-8;base64,${Buffer.from(downloadedDatabase.content).toString('base64')}`} download={`taler-wallet-database-${format(downloadedDatabase.time, 'yyyy/MM/dd_HH:mm')}.json`}>click here</a> to download
|
||||||
|
</div>}
|
||||||
|
<br />
|
||||||
<Diagnostics diagnostics={status} timedOut={timedOut} />
|
<Diagnostics diagnostics={status} timedOut={timedOut} />
|
||||||
{operations && operations.length > 0 && (
|
{operations && operations.length > 0 && (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
|
Loading…
Reference in New Issue
Block a user