@@ -15,6 +15,9 @@ currentNewAddon = "";
15
15
jsonCheckboxCount = 0 ;
16
16
jsonChecks = [ false , false ] ;
17
17
apiError = 0 ;
18
+ var addonTitle ;
19
+ var addonTags ;
20
+ var addonType ;
18
21
addonToCreateData = {
19
22
"title" : "" ,
20
23
"type" : "" ,
@@ -24,22 +27,21 @@ addonToCreateData = {
24
27
25
28
26
29
27
- // assuming $ is jQuery
30
+ // Make links open in enternal browser
28
31
$ ( document ) . on ( "click" , "a[href^='http']" , function ( event ) {
29
32
event . preventDefault ( ) ;
30
33
shell . openExternal ( this . href ) ;
31
34
} ) ;
32
35
33
36
34
37
$ ( document ) . ready ( ( ) => {
38
+ // Try and recieve data from gmpublish about user's addons
35
39
ipcRenderer . on ( "message" , ( event , message ) => {
36
-
37
40
var arrayOfAddonIds = message ;
38
-
39
41
for ( let index = 0 ; index < arrayOfAddonIds . length ; index ++ ) {
40
42
$ . ajax ( {
41
43
type : 'POST' ,
42
- url : 'https://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v1/1 ' ,
44
+ url : 'https://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v1/' ,
43
45
data : {
44
46
'itemcount' : 1 ,
45
47
'publishedfileids[0]' : parseInt ( arrayOfAddonIds [ index ] )
@@ -66,8 +68,13 @@ $(document).ready(() => {
66
68
$ ( '#update_existing_addon_button' ) . text ( 'Update existing addon' ) ;
67
69
} ) ;
68
70
71
+ // If user has already defined their Garrysmod directory, just skip ahead to #addon_management
69
72
if ( settings . get ( 'gmodDirectory' ) != null ) {
70
73
$ ( '#addon_management' ) . fadeIn ( ) ;
74
+ $ ( '#addon_management_prompt' ) . fadeIn ( ) ;
75
+ win . setBounds ( {
76
+ height : 175
77
+ } )
71
78
ipcRenderer . send ( 'getAddonInfo' ) ;
72
79
} else {
73
80
$ ( '#directory_selection' ) . fadeIn ( ) ;
@@ -81,12 +88,14 @@ $(document).ready(() => {
81
88
remote . getCurrentWindow ( ) . minimize ( ) ;
82
89
} )
83
90
91
+ // Used to "fake click" the input[type="file"]
84
92
$ ( '.fake_select' ) . click ( ( event ) => {
85
- var foo = event . target ;
86
- var foo2 = $ ( foo ) . data ( 'buttonclick' ) ;
87
- $ ( foo2 ) . click ( ) ;
93
+ var fakeButton = event . target ;
94
+ var realButton = $ ( fakeButton ) . data ( 'buttonclick' ) ;
95
+ $ ( realButton ) . click ( ) ;
88
96
} )
89
97
98
+ // Validate that we have read/write access to the users Garrysmod directory so we can use gmad & gmpublish
90
99
$ ( '#gmod_dir_folder' ) . change ( ( ) => {
91
100
var filePath = document . getElementById ( "gmod_dir_folder" ) . files [ 0 ] . path ;
92
101
var desName = filePath . substring ( filePath . length - 9 , filePath . length ) ;
@@ -112,6 +121,7 @@ $(document).ready(() => {
112
121
}
113
122
} )
114
123
124
+ // If directory exists (and is writable/readable) allow user to procede
115
125
$ ( '#addon_dir_folder' ) . change ( ( ) => {
116
126
currentNewAddon = document . getElementById ( "addon_dir_folder" ) . files [ 0 ] . path ;
117
127
ipcRenderer . send ( 'checkIfDirectoryExists' , currentNewAddon ) ;
@@ -142,22 +152,25 @@ $(document).ready(() => {
142
152
$ ( '#create_new_addon_button' ) . click ( ( ) => {
143
153
$ ( '#addon_management_prompt' ) . fadeOut ( ( ) => {
144
154
win . setBounds ( { height : 250 } )
145
- $ ( '#create_new_addon' ) . fadeIn ( )
155
+ $ ( '#create_new_addon, #addonDirPrompt ' ) . fadeIn ( )
146
156
} )
147
157
} )
148
158
149
159
$ ( '.back_button' ) . click ( ( event ) => {
150
160
var target = event . target ;
151
161
var divToGoBack = $ ( target ) . data ( 'forwards' ) ;
152
162
var divToShow = $ ( target ) . data ( 'backwards' ) ;
153
- win . setBounds ( { height : 175 } )
154
- goBack ( divToGoBack , divToShow ) ;
163
+ if ( $ ( target ) . data ( 'resize' ) != null ) {
164
+ var resizeInfo = JSON . parse ( "[" + $ ( target ) . data ( 'resize' ) + "]" ) ;
165
+ }
166
+ goBack ( divToGoBack , divToShow , resizeInfo ) ;
155
167
} )
156
168
157
169
$ ( '.transition_button' ) . click ( ( event ) => {
158
170
var target = event . target ;
159
171
var divToGoBack = $ ( target ) . data ( 'divtohide' ) ;
160
172
var divToShow = $ ( target ) . data ( 'divtoshow' ) ;
173
+ console . log ( divToGoBack , divToShow )
161
174
if ( $ ( target ) . data ( 'resize' ) != null ) {
162
175
var resizeInfo = JSON . parse ( "[" + $ ( target ) . data ( 'resize' ) + "]" ) ;
163
176
}
@@ -220,44 +233,38 @@ $(document).ready(() => {
220
233
}
221
234
} )
222
235
236
+ // Dyamically change boolean based on whether or not string is empty
223
237
$ ( "#jsonTitle > input[name='addonTitle']" ) . on ( 'keyup' , ( ) => {
224
238
if ( $ ( "#jsonTitle > input[name='addonTitle']" ) . val ( ) != "" ) {
225
- var addonTitle = $ ( "#jsonTitle > input[name='addonTitle']" ) . val ( ) ;
239
+ addonTitle = $ ( "#jsonTitle > input[name='addonTitle']" ) . val ( ) ;
226
240
jsonChecks [ 0 ] = true ;
227
- validateJsonForm ( )
241
+ validateJsonForm ( ) ;
228
242
} else {
229
243
jsonChecks [ 0 ] = false ;
230
- validateJsonForm ( )
244
+ validateJsonForm ( ) ;
231
245
}
232
246
} )
233
247
234
248
$ ( "#jsonType > select[name='addonType']" ) . change ( ( ) => {
235
- if ( $ ( '#jsonType > select[name="addonType"]' ) . val ( ) != "" ) {
236
- var addonType = $ ( '#jsonType > select[name="addonType"]' ) . val ( ) ;
249
+ if ( $ ( '#jsonType > select[name="addonType"]' ) . val ( ) != "null " ) {
250
+ addonType = $ ( '#jsonType > select[name="addonType"]' ) . val ( ) ;
237
251
jsonChecks [ 1 ] = true ;
238
- validateJsonForm ( )
252
+ validateJsonForm ( ) ;
239
253
} else {
240
254
jsonChecks [ 1 ] = false ;
241
- validateJsonForm ( )
255
+ validateJsonForm ( ) ;
242
256
}
243
257
} )
244
258
245
259
$ ( '#jsonAddonValidate' ) . click ( ( ) => {
246
260
if ( $ ( ".typeCheckbox:checked" ) . val ( ) != null ) {
247
- var addonTags = $ ( ".typeCheckbox:checked" ) . map ( function ( ) {
261
+ addonTags = $ ( ".typeCheckbox:checked" ) . map ( function ( ) {
248
262
return $ ( this ) . attr ( 'name' ) ;
249
263
} ) . get ( ) ;
250
264
}
251
265
252
266
var ignoreList = $ ( "#jsonIgnore input[name='addonIgnore']" ) . val ( ) . replace ( / \s / g, '' ) . split ( ',' ) ;
253
-
254
- console . log ( ignoreList )
255
-
256
- // var test = ignoreList);
257
-
258
267
259
- // console.log(JSON.parse("[" + ignoreList + "]"));
260
-
261
268
if ( jsonChecks [ 0 , 1 ] ) {
262
269
addonToCreateData . title = addonTitle ;
263
270
addonToCreateData . type = addonType ;
@@ -279,4 +286,40 @@ $(document).ready(() => {
279
286
$ ( '#jsonAddonValidate' ) . css ( 'background-color' , "#0f0f0f" )
280
287
}
281
288
}
289
+
290
+ $ ( "#resetAddonCreation" ) . click ( ( ) => {
291
+
292
+ jsonCheckboxCount = 0 ;
293
+
294
+ // Clear the old data we used to make addon.json
295
+ addonToCreateData = {
296
+ "title" : "" ,
297
+ "type" : "" ,
298
+ "tags" : [ ] ,
299
+ "ignore" : [ ]
300
+ } ;
301
+
302
+ // Reset all input values & checkboxes
303
+ $ ( '#jsonTitle > input[name="addonTitle"]' ) . val ( "" ) ;
304
+ $ ( 'select[name="addonType"]' ) . val ( "null" ) ;
305
+ $ ( '.typeCheckbox' ) . prop ( 'checked' , false ) ;
306
+ $ ( '#jsonIgnore > input[name="addonIgnore"]' ) . val ( "" ) ;
307
+
308
+ // Clear the addon name on directory selection
309
+ $ ( "#addonDir b" ) . text ( '' ) ;
310
+
311
+ // Set the input to null
312
+ $ ( "#addon_dir_folder" ) . val ( null ) ;
313
+
314
+ // Reset directory validation
315
+ $ ( '#addonDirCheck' ) . css ( { backgroundColor : "#0f0f0f" , cursor : "not-allowed" } ) ;
316
+ $ ( '#addonDirCheck' ) . prop ( 'disabled' , true ) ;
317
+
318
+ // Reset validation checks
319
+ jsonChecks = [ false , false ] ;
320
+ validateJsonForm ( ) ;
321
+
322
+ // Hide any div that may still be displayed
323
+ $ ( '#addonjsonPrompt, #jsonCreator, #gmaPrep, #createGMA' ) . css ( 'display' , 'none' ) ;
324
+ } )
282
325
} ) ;
0 commit comments