@@ -7,12 +7,18 @@ import { NestedStringArray } from '@askvortsov/rich-icu-message-formatter';
7
7
8
8
/**
9
9
* Returns a setting added by the extension
10
- *
11
- * @param {string } slug
12
- * @returns {any }
13
10
*/
14
- function setting ( slug : string ) : any {
15
- return app . forum . attribute ( `maicol07-sso.${ slug } ` ) ;
11
+ function setting ( slug : string , cast ?: typeof Boolean | typeof Number ) : any | boolean | number {
12
+ let setting = app . forum . attribute ( `maicol07-sso.${ slug } ` ) ;
13
+
14
+ if ( cast !== undefined ) {
15
+ if ( cast === Boolean && isNaN ( setting as number ) ) {
16
+ setting = Number ( setting ) ;
17
+ }
18
+ return cast ( setting ) ;
19
+ }
20
+
21
+ return setting ;
16
22
}
17
23
18
24
/**
@@ -23,24 +29,24 @@ function getItems(): Record<string, { url: string; itemName: string; removeItem:
23
29
login : {
24
30
url : setting ( 'login_url' ) ,
25
31
itemName : 'logIn' ,
26
- removeItem : setting ( 'remove_login_btn' ) === '1' ,
32
+ removeItem : setting ( 'remove_login_btn' , Boolean ) ,
27
33
text : app . translator . trans ( 'core.forum.header.log_in_link' ) ,
28
34
} ,
29
35
signup : {
30
36
url : setting ( 'signup_url' ) ,
31
37
itemName : 'signUp' ,
32
- removeItem : setting ( 'remove_signup_btn' ) === '1' ,
38
+ removeItem : setting ( 'remove_signup_btn' , Boolean ) ,
33
39
text : app . translator . trans ( 'core.forum.header.sign_up_link' ) ,
34
40
} ,
35
41
} ;
36
42
}
37
43
38
44
app . initializers . add ( 'maicol07-sso' , ( ) => {
39
45
window . addEventListener ( 'load' , ( ) => {
40
- if ( ! setting ( 'provider_mode' ) ) {
46
+ if ( ! setting ( 'provider_mode' , Boolean ) ) {
41
47
override ( LogInModal . prototype , 'oncreate' , ( ) => {
42
48
const items = getItems ( ) ;
43
- window . top . location . href = items . login . url ;
49
+ window . location . href = items . login . url ;
44
50
throw new Error ( 'Stop execution' ) ;
45
51
} ) ;
46
52
@@ -67,28 +73,28 @@ app.initializers.add('maicol07-sso', () => {
67
73
} ) ;
68
74
69
75
extend ( SettingsPage . prototype , 'accountItems' , ( items ) => {
70
- if ( ! setting ( 'login_url' ) ) {
76
+ if ( ! setting ( 'login_url' , Boolean ) ) {
71
77
return ; // Do not add account items if no login url is set.
72
78
}
73
79
74
80
// Remove change email and password buttons
75
81
items . remove ( 'changeEmail' ) ;
76
82
items . remove ( 'changePassword' ) ;
77
83
78
- if ( ! setting ( 'manage_account_url' ) ) {
84
+ if ( ! setting ( 'manage_account_url' , Boolean ) ) {
79
85
return ;
80
86
}
81
87
82
88
items . add (
83
89
'manageAccount' ,
84
- < a class = "Button" href = { setting ( 'manage_account_url' ) } target = { setting ( 'manage_account_btn_open_in_new_tab' ) === '1' ? '_blank' : '' } >
90
+ < a class = "Button" href = { setting ( 'manage_account_url' ) } target = { setting ( 'manage_account_btn_open_in_new_tab' , Boolean ) ? '_blank' : '' } >
85
91
{ app . translator . trans ( 'maicol07-sso.forum.manage_account_btn' ) }
86
92
</ a >
87
93
) ;
88
94
} ) ;
89
95
90
96
extend ( SettingsPage . prototype , 'settingsItems' , ( items ) => {
91
- if ( setting ( 'manage_account_url' ) ) {
97
+ if ( setting ( 'manage_account_url' , Boolean ) ) {
92
98
return ; // Manage account link is added above
93
99
}
94
100
0 commit comments