1
- import { AlarmKey } from '@common/constants/alarm-key.constant' ;
1
+ import { AlarmKey , SCHEDULE_ALARMS } from '@common/constants/alarm-key.constant' ;
2
+ import { ADENA_WALLET_EXTENSION_ID } from '@common/constants/storage.constant' ;
2
3
import { MemoryProvider } from '@common/provider/memory/memory-provider' ;
3
4
import { ChromeLocalStorage } from '@common/storage' ;
4
5
import { CommandHandler } from '@inject/message/command-handler' ;
@@ -9,6 +10,8 @@ import { MessageHandler } from './inject/message';
9
10
const inMemoryProvider = new MemoryProvider ( ) ;
10
11
inMemoryProvider . init ( ) ;
11
12
13
+ initAlarms ( ) ;
14
+
12
15
function existsWallet ( ) : Promise < boolean > {
13
16
const storage = new ChromeLocalStorage ( ) ;
14
17
return storage
@@ -53,33 +56,51 @@ chrome.action.onClicked.addListener(async () => {
53
56
} ) ;
54
57
55
58
chrome . runtime . onConnect . addListener ( async ( port ) => {
59
+ if ( port . name !== ADENA_WALLET_EXTENSION_ID ) {
60
+ return ;
61
+ }
62
+
56
63
inMemoryProvider . addConnection ( ) ;
57
- await chrome . alarms . clear ( AlarmKey . EXPIRED_PASSWORD ) ;
64
+ inMemoryProvider . updateExpiredTimeBy ( null ) ;
58
65
59
66
port . onDisconnect . addListener ( async ( ) => {
60
67
inMemoryProvider . removeConnection ( ) ;
61
68
62
- if ( inMemoryProvider . isActive ( ) ) {
63
- await chrome . alarms . clear ( AlarmKey . EXPIRED_PASSWORD ) ;
64
- } else {
65
- await chrome . alarms . create ( AlarmKey . EXPIRED_PASSWORD , {
66
- delayInMinutes : inMemoryProvider . getExpiredPasswordDurationMinutes ( ) ,
67
- } ) ;
69
+ if ( ! inMemoryProvider . isActive ( ) ) {
70
+ const expiredTime = new Date ( ) . getTime ( ) + inMemoryProvider . getExpiredPasswordDurationTime ( ) ;
71
+ inMemoryProvider . updateExpiredTimeBy ( expiredTime ) ;
72
+
73
+ console . info ( 'Password Expired time:' , new Date ( expiredTime ) ) ;
68
74
}
69
75
} ) ;
70
76
} ) ;
71
77
72
78
chrome . alarms . onAlarm . addListener ( async ( alarm ) => {
73
- if ( alarm . name === AlarmKey . EXPIRED_PASSWORD ) {
74
- await chrome . alarms . clear ( AlarmKey . EXPIRED_PASSWORD ) ;
79
+ try {
80
+ const currentTime = new Date ( ) . getTime ( ) ;
81
+ chrome . storage . local . set ( { SESSION : currentTime } ) ;
75
82
76
- if ( inMemoryProvider . isActive ( ) ) {
77
- return ;
78
- }
83
+ switch ( alarm ?. name ) {
84
+ case AlarmKey . EXPIRED_PASSWORD :
85
+ if ( ! inMemoryProvider . isExpired ( currentTime ) ) {
86
+ return ;
87
+ }
88
+
89
+ await chrome . storage . session . clear ( ) ;
90
+ await clearInMemoryKey ( inMemoryProvider ) ;
91
+
92
+ inMemoryProvider . updateExpiredTimeBy ( null ) ;
93
+ console . info ( 'Password Expired' ) ;
79
94
80
- await chrome . storage . session . clear ( ) ;
81
- await clearInMemoryKey ( inMemoryProvider ) ;
95
+ break ;
96
+ default :
97
+ break ;
98
+ }
99
+ } catch ( error ) {
100
+ console . error ( error ) ;
82
101
}
102
+
103
+ return true ;
83
104
} ) ;
84
105
85
106
chrome . tabs . onUpdated . addListener ( ( tabId , changeInfo ) => {
@@ -97,3 +118,11 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
97
118
98
119
return MessageHandler . createHandler ( inMemoryProvider , message , sender , sendResponse ) ;
99
120
} ) ;
121
+
122
+ function initAlarms ( ) : void {
123
+ SCHEDULE_ALARMS . map ( ( alarm ) => {
124
+ chrome . alarms . create ( alarm . key , {
125
+ periodInMinutes : alarm . periodInMinutes ,
126
+ } ) ;
127
+ } ) ;
128
+ }
0 commit comments