1
1
import { DateTime } from "luxon" ;
2
- import { clearStudyData , initStudy , requestDeletion } from "./study.js" ;
2
+ import { clearStudyData , initStudy } from "./study.js" ;
3
3
4
4
( ( ) => {
5
5
let msu = document . querySelector ( "#mostsigunit" ) ;
6
6
let exampleField = document . querySelector ( "#example" ) ;
7
- let studyOptIn = document . querySelector ( "#study-optin" ) ;
8
- let purgeModal = document . querySelector ( "#datapurgemodal" ) ;
9
- let serverDeleteBox = document . querySelector ( "#deleteServer" ) ;
10
- let responseEl = document . querySelector ( "#response" ) ;
7
+ let studyInfo = document . querySelector ( "#study-info" ) ;
11
8
12
9
function saveOptions ( ) {
13
- console . assert ( ! studyOptIn . checked || msu . value == "year" ) ;
14
10
return browser . storage . sync . set ( { mostsigunit : msu . value } )
15
- . then ( ( ) => {
16
- return browser . storage . local . set ( { studyOptIn : studyOptIn . checked } ) ;
17
- } )
18
11
. catch ( error => console . error ( error ) ) ;
19
12
}
20
13
21
14
function restoreOptions ( ) {
15
+ // load old study data to check if we should show the notice
22
16
return Promise . all ( [
23
17
browser . storage . sync . get ( "mostsigunit" ) ,
24
- browser . storage . local . get ( "studyOptIn" ) ,
18
+ browser . storage . local . get ( [
19
+ "msuChoices" ,
20
+ "studyOptIn" ,
21
+ "viewCounts" ,
22
+ ] ) ,
25
23
] )
26
24
. then ( ( results ) => {
27
25
let msuval = results [ 0 ] . mostsigunit ;
28
26
let optin = results [ 1 ] . studyOptIn ;
27
+ let choices = results [ 1 ] . msuChoices ;
28
+ let views = results [ 1 ] . viewCounts ;
29
29
30
30
if ( msuval ) {
31
31
msu . value = msuval ;
32
32
}
33
- studyOptIn . checked = optin ;
34
- if ( optin ) {
35
- disableMsuSelection ( ) ;
33
+ // hide notice if no signs of prev study participation is found
34
+ if ( ! optin && ! choices && ! views ) {
35
+ studyInfo . style . display = "none" ;
36
36
}
37
37
} )
38
38
. then ( ( ) => updateExampleField ( ) )
@@ -61,23 +61,6 @@ import { clearStudyData, initStudy, requestDeletion } from "./study.js";
61
61
exampleField . value = v ;
62
62
}
63
63
64
- function disableMsuSelection ( ) {
65
- msu . value = "year" ;
66
- msu . disabled = true ;
67
- msu . title = "Study participation requires Year precision." ;
68
- updateExampleField ( ) ;
69
- }
70
-
71
- function enableMsuSelection ( ) {
72
- msu . disabled = false ;
73
- msu . title = "" ;
74
- }
75
-
76
- function abortOptOut ( ) {
77
- purgeModal . style . display = "none" ;
78
- studyOptIn . checked = true ;
79
- }
80
-
81
64
document . addEventListener ( "DOMContentLoaded" , restoreOptions ) ;
82
65
document . querySelector ( "#mostsigunit" ) . addEventListener ( "change" , function ( ) {
83
66
saveOptions ( )
@@ -86,74 +69,4 @@ import { clearStudyData, initStudy, requestDeletion } from "./study.js";
86
69
} )
87
70
. catch ( error => console . error ( error ) ) ;
88
71
} ) ;
89
- document . querySelector ( "#study-optin" ) . addEventListener ( "change" , function ( ) {
90
- if ( this . checked ) {
91
- // opting in
92
- clearStudyData ( )
93
- . then ( ( ) => {
94
- disableMsuSelection ( ) ;
95
- return initStudy ( ) ;
96
- } )
97
- . then ( ( ) => {
98
- return saveOptions ( ) ;
99
- } )
100
- . catch ( error => console . error ( error ) ) ;
101
- } else {
102
- // opting out
103
- purgeModal . style . display = "block" ;
104
- }
105
- } ) ;
106
- document . querySelector ( "#purgeAbort" ) . addEventListener ( "click" , abortOptOut ) ;
107
-
108
- function optOutHandler ( event ) {
109
- // purge data
110
- responseEl . classList . remove ( "message-success" , "message-failure" ) ;
111
- let doDelete = serverDeleteBox . checked ;
112
- let deletion ;
113
- if ( doDelete ) {
114
- console . log ( "Requesting deletion" ) ;
115
- deletion = requestDeletion ( ) . then ( ( res ) => {
116
- console . log ( res ) ;
117
- if ( res . result == "notsent" || res . result == "deleted" ) {
118
- return true ;
119
- } else {
120
- responseEl . textContent = `Error ${ res . status } while deleting study data. Please contact support.` ;
121
- responseEl . classList . add ( "message-failure" ) ;
122
- abortOptOut ( ) ;
123
- return false ;
124
- }
125
- } ) ;
126
- } else {
127
- deletion = Promise . resolve ( true ) ;
128
- }
129
- deletion . then ( ( success ) => {
130
- if ( success ) {
131
- return clearStudyData ( ) ; // fulfilled with no return
132
- }
133
- return success ; // to be distinguishable from clears undefined
134
- } )
135
- . then ( ( res ) => {
136
- if ( res === undefined ) { // clear succeeded
137
- enableMsuSelection ( ) ;
138
- return saveOptions ( ) ;
139
- }
140
- } )
141
- . catch ( error => {
142
- console . error ( error ) ;
143
- responseEl . textContent = `Error ${ error } . Please contact support.` ;
144
- responseEl . classList . add ( "message-failure" ) ;
145
- abortOptOut ( ) ;
146
- } )
147
- . finally ( ( ) => {
148
- purgeModal . style . display = "none" ;
149
- } ) ;
150
- }
151
- document . querySelector ( "#purgeCont" ) . addEventListener ( "click" , optOutHandler ) ;
152
-
153
- // When the user clicks anywhere outside of the modal, close it
154
- window . addEventListener ( "click" , function ( event ) {
155
- if ( event . target == purgeModal ) {
156
- abortOptOut ( ) ;
157
- }
158
- } ) ;
159
72
} ) ( ) ;
0 commit comments