@@ -8,13 +8,15 @@ import {
8
8
useDiagram ,
9
9
useEnums ,
10
10
useNotes ,
11
+ useSaveState ,
11
12
useTransform ,
12
13
useTypes ,
13
14
} from "../../../hooks" ;
14
15
import { databases } from "../../../data/databases" ;
15
16
import { octokit } from "../../../data/octokit" ;
17
+ import { MODAL , State } from "../../../data/constants" ;
16
18
17
- export default function Share ( { title } ) {
19
+ export default function Share ( { title, setModal } ) {
18
20
const { t } = useTranslation ( ) ;
19
21
const { gistId, setGistId } = useContext ( IdContext ) ;
20
22
const [ loading , setLoading ] = useState ( true ) ;
@@ -24,6 +26,7 @@ export default function Share({ title }) {
24
26
const { types } = useTypes ( ) ;
25
27
const { enums } = useEnums ( ) ;
26
28
const { transform } = useTransform ( ) ;
29
+ const { setSaveState } = useSaveState ( ) ;
27
30
const url =
28
31
window . location . origin + window . location . pathname + "?shareId=" + gistId ;
29
32
@@ -51,6 +54,22 @@ export default function Share({ title }) {
51
54
transform ,
52
55
] ) ;
53
56
57
+ const unshare = useCallback ( async ( ) => {
58
+ try {
59
+ await octokit . request ( `DELETE /gists/${ gistId } ` , {
60
+ gist_id : gistId ,
61
+ headers : {
62
+ "X-GitHub-Api-Version" : "2022-11-28" ,
63
+ } ,
64
+ } ) ;
65
+ setGistId ( "" ) ;
66
+ setModal ( MODAL . NONE ) ;
67
+ setSaveState ( State . SAVING ) ;
68
+ } catch ( e ) {
69
+ console . error ( e ) ;
70
+ }
71
+ } , [ gistId , setGistId , setModal , setSaveState ] ) ;
72
+
54
73
const updateGist = useCallback ( async ( ) => {
55
74
setLoading ( true ) ;
56
75
try {
@@ -136,17 +155,16 @@ export default function Share({ title }) {
136
155
< div >
137
156
< div className = "flex gap-3" >
138
157
< Input value = { url } size = "large" />
139
- < Button
140
- size = "large"
141
- theme = "solid"
142
- icon = { < IconLink /> }
143
- onClick = { copyLink }
144
- >
158
+ </ div >
159
+ < div className = "text-xs mt-2" > { t ( "share_info" ) } </ div >
160
+ < div className = "flex gap-2 mt-3" >
161
+ < Button block onClick = { unshare } >
162
+ { t ( "unshare" ) }
163
+ </ Button >
164
+ < Button block theme = "solid" icon = { < IconLink /> } onClick = { copyLink } >
145
165
{ t ( "copy_link" ) }
146
166
</ Button >
147
167
</ div >
148
- < hr className = "opacity-20 mt-3 mb-1" />
149
- < div className = "text-xs" > { t ( "share_info" ) } </ div >
150
168
</ div >
151
169
) ;
152
170
}
0 commit comments