File tree Expand file tree Collapse file tree 4 files changed +47
-0
lines changed Expand file tree Collapse file tree 4 files changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ import { defineStore } from 'pinia'
2
+
3
+ export const useTegakiViewStore = defineStore (
4
+ 'tegakiViewStore' ,
5
+ {
6
+ state : ( ) => {
7
+ return {
8
+ pop : false
9
+ }
10
+ }
11
+ } ) ;
Original file line number Diff line number Diff line change
1
+ import { Tegaki } from '@/api/tegaki/tegaki' ;
2
+ import { useTegakiViewStore } from '@/api/tegaki/store'
3
+ import type { Router } from 'vue-router'
4
+ import i18next from 'i18next'
5
+
6
+ window . addEventListener ( 'popstate' , ( ) => {
7
+ const store = useTegakiViewStore ( ) ;
8
+ store . pop = true ;
9
+ } ) ;
10
+
11
+ export const withTegakiViewBackProtection = ( router : Router ) : void => {
12
+ router . beforeEach ( ( to , from ) => {
13
+ console . log ( `visible ${ Tegaki . visible } ` )
14
+ if ( ! Tegaki . visible ) {
15
+ return true ;
16
+ }
17
+
18
+ const confirm = window . confirm ( i18next . t ( "tegakijs.confirmCancel" ) ) ;
19
+ if ( confirm ) {
20
+ Tegaki . hide ( ) ;
21
+ return true ;
22
+ }
23
+
24
+ return false ;
25
+ } ) ;
26
+ } ;
Original file line number Diff line number Diff line change @@ -2701,6 +2701,8 @@ export var Tegaki = {
2701
2701
2702
2702
startTimeStamp : 0 ,
2703
2703
2704
+ visible : false ,
2705
+
2704
2706
bg : null ,
2705
2707
canvas : null ,
2706
2708
ctx : null ,
@@ -2846,6 +2848,8 @@ export var Tegaki = {
2846
2848
self . loadReplayFromURL ( opts . replayURL ) ;
2847
2849
}
2848
2850
}
2851
+
2852
+ self . visible = true ;
2849
2853
} ,
2850
2854
2851
2855
init : function ( ) {
@@ -3137,6 +3141,8 @@ export var Tegaki = {
3137
3141
Tegaki . bg . classList . add ( 'tegaki-hidden' ) ;
3138
3142
document . body . classList . remove ( 'tegaki-backdrop' ) ;
3139
3143
Tegaki . unBindGlobalEvents ( ) ;
3144
+
3145
+ Tegaki . visible = false ;
3140
3146
} ,
3141
3147
3142
3148
destroy : function ( ) {
@@ -3171,6 +3177,8 @@ export var Tegaki = {
3171
3177
Tegaki . replayViewer = null ;
3172
3178
3173
3179
Tegaki . destroyBuffers ( ) ;
3180
+
3181
+ Tegaki . visible = false ;
3174
3182
} ,
3175
3183
3176
3184
flatten : function ( ctx ) {
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ import { xrpc } from '@/api/atproto/client'
9
9
import TagView from '@/views/TagView.vue'
10
10
import SettingsView from '@/views/SettingsView.vue'
11
11
import i18next from 'i18next'
12
+ import { withTegakiViewBackProtection } from '@/api/tegaki/tegaki-view-helper'
12
13
13
14
const router = createRouter ( {
14
15
history : createWebHistory ( import . meta. env . BASE_URL ) ,
@@ -84,5 +85,6 @@ const router = createRouter({
84
85
} ) ;
85
86
86
87
withBreadcrumb ( router ) ;
88
+ withTegakiViewBackProtection ( router ) ;
87
89
88
90
export default router
You can’t perform that action at this time.
0 commit comments