/
Tokens.stories.js
134 lines (121 loc) · 3.43 KB
/
Tokens.stories.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import React from "react";
import { CenteredModalWrapper } from "../layout/CenteredModalWrapper";
import { TokenList } from "./TokenList";
import { TokenPageLayout } from "./TokenPageLayout";
import { NoAccess } from "./NoAccess";
import { RevokeTokenModal } from "./RevokeTokenModal";
import { RevealTokenModal } from "./RevealTokenModal";
import { CreateToken } from "./CreateToken";
import { StorybookAuthContextProvider } from "../auth/AuthContext";
export default {
title: "Token/Tokens"
};
const scopes = ["read_rooms", "write_rooms", "another_long_scope_here"];
const scopeInfo = {
["read_rooms"]: {
description: "Read room data",
appTags: [],
accountTags: [],
tags: ["myRooms", "favoriteRooms", "publicRooms"]
},
["write_rooms"]: {
description: "Write room data",
appTags: [],
accountTags: [],
tags: ["createRooms", "updateRoom"]
},
["another_long_scope_here"]: {
description:
"This scope does a lot of interesting things and as such we're going to need a lot of room to write about it.",
appTags: [],
accountTags: [],
tags: ["myRooms", "favoriteRooms", "publicRooms"]
}
};
const dummyTokens = [
{
account_id: "1234567890",
id: "1",
inserted_at: 1234,
is_revoked: false,
scopes: ["write_rooms", "read_rooms"],
subject_type: "app",
token: "(Redacted)",
updated_at: 1234
},
{
account_id: "1123456789",
id: "2",
inserted_at: 1234,
is_revoked: false,
scopes: ["write_rooms", "read_rooms"],
subject_type: "account",
token: "(Redacted)",
updated_at: 1234
},
{
account_id: "1234567890",
id: "3",
inserted_at: 1234,
is_revoked: false,
scopes: ["write_rooms", "read_rooms"],
subject_type: "account",
token: "(Redacted)",
updated_at: 1234
}
];
const noop = () => {};
// eslint-disable-next-line react/prop-types
const StorybookWrapper = ({ children }) => {
return (
<StorybookAuthContextProvider>
<TokenPageLayout>{children}</TokenPageLayout>
</StorybookAuthContextProvider>
);
};
export const NoAccessPage = () => {
return (
<StorybookWrapper>
<NoAccess />
</StorybookWrapper>
);
};
// eslint-disable-next-line react/prop-types
export const TokenListPage = ({ children }) => (
<StorybookWrapper>
{children}
<TokenList tokens={dummyTokens} onRevokeToken={noop} />
</StorybookWrapper>
);
export const EmptyTokenListPage = () => (
<StorybookWrapper>
<TokenList tokens={[]} onRevokeToken={noop} />
</StorybookWrapper>
);
export const RevokeTokenModalPage = () => (
<TokenListPage>
<CenteredModalWrapper>
<RevokeTokenModal onClose={noop} revoke={noop} />
</CenteredModalWrapper>
</TokenListPage>
);
// eslint-disable-next-line react/prop-types
export function ModalRevokeToken() {
return <RevokeTokenModal onClose={noop} revoke={noop} />;
}
const selectedScopes = ["read_rooms", "write_rooms"];
// eslint-disable-next-line react/prop-types
export const CreateTokenPage = ({ children }) => (
<StorybookWrapper>
{children}
<CreateToken scopes={scopes} scopeInfo={scopeInfo} selectedScopes={selectedScopes} />
</StorybookWrapper>
);
export const ModalSaveTokenPage = () => (
<StorybookWrapper>
<CenteredModalWrapper>
<RevealTokenModal onClose={noop} token={{ token: "abcd1234" }} selectedScopes={["write_rooms"]} />
</CenteredModalWrapper>
<TokenList tokens={dummyTokens} onRevokeToken={noop} />
</StorybookWrapper>
);