@@ -291,7 +291,9 @@ import {
291
291
set_skin ,
292
292
save_skin ,
293
293
import_skin ,
294
- update_skins ,
294
+ delete_skin ,
295
+ get_order ,
296
+ save_order ,
295
297
get_skins ,
296
298
get_render ,
297
299
get_cape_data ,
@@ -340,6 +342,7 @@ const importer = ref({
340
342
const importType = ref (' Mojang' )
341
343
342
344
const skinSaves = ref (await get_skins ().catch (handleError))
345
+ const skinOrder = ref ([])
343
346
344
347
const search = ref (' ' )
345
348
@@ -356,13 +359,6 @@ const filteredResults = computed(() => {
356
359
saves = saves .filter ((save ) => {
357
360
return save .user === selectedAccount .value .id
358
361
})
359
- } else {
360
- for (let i = 0 ; i < saves .length ; i++ ) {
361
- if (! Object .prototype .hasOwnProperty .call (saves[i].order , selectedAccount .value .id )) {
362
- shiftSaves (0 , true )
363
- saves[i].order [selectedAccount .value .id ] = 0
364
- }
365
- }
366
362
}
367
363
368
364
if (Filters .value .sort === ' Name' ) {
@@ -373,7 +369,7 @@ const filteredResults = computed(() => {
373
369
374
370
if (Filters .value .sort === ' Custom' ) {
375
371
saves .sort ((a , b ) => {
376
- return a . order [ selectedAccount . value .id ] - b . order [ selectedAccount . value .id ]
372
+ return skinOrder . value .indexOf ( a . id ) - skinOrder . value .indexOf ( b . id )
377
373
})
378
374
}
379
375
@@ -391,25 +387,25 @@ const filteredResults = computed(() => {
391
387
return saves
392
388
})
393
389
394
- const moveCard = async (move , skin ) => {
395
- let sorted = Array .from (skinSaves .value )
390
+ const moveCard = async (move , id ) => {
391
+ let order = Array .from (skinOrder .value )
396
392
if (Filters .value .filter === ' Current user' ) {
397
- sorted = sorted .filter ((save ) => {
398
- return save .user === selectedAccount .value .id
393
+ let saves = Array .from (skinSaves .value ).sort ((a , b ) => {
394
+ return skinOrder .value .indexOf (a .id ) - skinOrder .value .indexOf (b .id )
395
+ })
396
+ order = order .filter ((_ , i ) => {
397
+ return saves[i].user === selectedAccount .value .id
399
398
})
400
399
}
401
- sorted .sort ((a , b ) => {
402
- return a .order [selectedAccount .value .id ] - b .order [selectedAccount .value .id ]
403
- })
404
-
405
- const targetIndex = sorted .indexOf (skin) + move
406
- if (targetIndex < 0 || targetIndex > sorted .length - 1 ) return
407
- const current = skin .order [selectedAccount .value .id ]
408
- const target = sorted[targetIndex].order [selectedAccount .value .id ]
409
- shiftSaves (target < current ? target : target + 1 , true )
410
- skin .order [selectedAccount .value .id ] = target < current ? target : target + 1
411
- shiftSaves (target < current ? current + 1 : current, false )
412
- await update_skins (skinSaves .value ).catch (handleError)
400
+ let index = order .indexOf (id)
401
+ if (index == 0 && move == - 1 ) return
402
+ if (index == order .length - 1 && move == 1 ) return
403
+
404
+ let targetIndex = skinOrder .value .indexOf (order[index + move])
405
+ let currentIndex = skinOrder .value .indexOf (id)
406
+ skinOrder .value .splice (currentIndex, 1 )
407
+ skinOrder .value .splice (targetIndex, 0 , id)
408
+ await save_order (skinOrder .value , selectedAccount .value .id )
413
409
}
414
410
415
411
const handleRightClick = (event , item ) => {
@@ -462,10 +458,10 @@ const handleOptionsClick = async (args) => {
462
458
await handleSkin (' upload' )
463
459
break
464
460
case ' left' :
465
- if (Filters .value .sort === ' Custom' ) await moveCard (- 1 , args .item )
461
+ if (Filters .value .sort === ' Custom' ) await moveCard (- 1 , args .item . id )
466
462
break
467
463
case ' right' :
468
- if (Filters .value .sort === ' Custom' ) await moveCard (1 , args .item )
464
+ if (Filters .value .sort === ' Custom' ) await moveCard (1 , args .item . id )
469
465
break
470
466
case ' edit' :
471
467
await edit_skin (args .item )
@@ -482,18 +478,7 @@ const handleOptionsClick = async (args) => {
482
478
483
479
const deleteSkin = async () => {
484
480
skinSaves .value .splice (skinSaves .value .indexOf (selectedSkin .value ), 1 )
485
- let sorted = skinSaves .value .filter ((save ) => {
486
- return Object .prototype .hasOwnProperty .call (save .order , selectedAccount .value .id )
487
- })
488
- if (sorted .length > 0 ) {
489
- sorted .sort ((a , b ) => {
490
- return a .order [selectedAccount .value .id ] - b .order [selectedAccount .value .id ]
491
- })
492
- for (let i = selectedSkin .value .order [selectedAccount .value .id ]; i < sorted .length ; i++ ) {
493
- sorted[i].order [selectedAccount .value .id ]--
494
- }
495
- }
496
- await update_skins (skinSaves .value ).catch (handleError)
481
+ await delete_skin (selectedSkin .value .id ).catch (handleError)
497
482
InLibrary .value = await check_skin (skinData .value .skin , selectedAccount .value .id ).catch (
498
483
handleError,
499
484
)
@@ -524,13 +509,12 @@ const next = async () => {
524
509
handleError,
525
510
)
526
511
const model = await get_render (data).catch (handleError)
527
- shiftSaves (0 , true )
528
- await update_skins (skinSaves .value ).catch (handleError)
529
512
await save_skin (selectedAccount .value .id , data, skin .name , model, ' ' ).catch (handleError)
530
513
skin .selected = false
531
514
importedSkins .value ++
532
515
}
533
516
skinSaves .value = await get_skins ().catch (handleError)
517
+ skinOrder .value = await get_order (selectedAccount .value .id ).catch (handleError)
534
518
loading .value = false
535
519
skinModal .value .hide ()
536
520
}
@@ -553,6 +537,7 @@ const handleAdd = async () => {
553
537
handleError,
554
538
)
555
539
skinSaves .value = await get_skins ().catch (handleError)
540
+ skinOrder .value = await get_order (selectedAccount .value .id ).catch (handleError)
556
541
InLibrary .value = true
557
542
}
558
543
@@ -595,8 +580,6 @@ const clickCard = (data) => {
595
580
596
581
const handleSkin = async (state ) => {
597
582
if (state .includes (' save' )) {
598
- shiftSaves (0 , true )
599
- await update_skins (skinSaves .value ).catch (handleError)
600
583
const model = await get_render (selectedSkin .value ).catch (handleError)
601
584
await save_skin (
602
585
selectedAccount .value .id ,
@@ -606,14 +589,14 @@ const handleSkin = async (state) => {
606
589
' ' ,
607
590
).catch (handleError)
608
591
skinSaves .value = await get_skins ().catch (handleError)
592
+ skinOrder .value = await get_order (selectedAccount .value .id ).catch (handleError)
609
593
}
610
594
if (state .includes (' upload' )) {
611
595
uploadingSkin .value = true
612
596
const capeid = await get_cape_data (selectedSkin .value .cape , ' id' ).catch (handleError)
613
597
const uploadedCape = await set_cape (capeid, selectedAccount .value .access_token ).catch (
614
598
handleError,
615
599
)
616
- console .log (selectedSkin .value .skin )
617
600
const uploadedSkin = await set_skin (
618
601
selectedSkin .value .skin ,
619
602
selectedSkin .value .arms ,
@@ -707,28 +690,9 @@ const duplicate_skin = async (args) => {
707
690
data .cape = args .cape
708
691
data .arms = args .arms
709
692
data .unlocked_capes = []
710
- shiftSaves (0 , true )
711
- await update_skins (skinSaves .value ).catch (handleError)
712
693
await save_skin (selectedAccount .value .id , data, args .name , args .model , ' ' ).catch (handleError)
713
694
skinSaves .value = await get_skins ().catch (handleError)
714
- }
715
-
716
- const shiftSaves = (index , shiftRight ) => {
717
- let sorted = skinSaves .value .filter ((save ) => {
718
- return Object .prototype .hasOwnProperty .call (save .order , selectedAccount .value .id )
719
- })
720
- sorted .sort ((a , b ) => {
721
- return a .order [selectedAccount .value .id ] - b .order [selectedAccount .value .id ]
722
- })
723
- if (shiftRight) {
724
- for (let i = sorted .length - 1 ; i >= index; i-- ) {
725
- sorted[i].order [selectedAccount .value .id ]++
726
- }
727
- } else {
728
- for (let i = index; i < sorted .length ; i++ ) {
729
- sorted[i].order [selectedAccount .value .id ]--
730
- }
731
- }
695
+ skinOrder .value = await get_order (selectedAccount .value .id ).catch (handleError)
732
696
}
733
697
734
698
const openskin = async () => {
@@ -819,6 +783,7 @@ const handleImportType = async () => {
819
783
}
820
784
821
785
watch (selectedAccount, async (newAccount ) => {
786
+ skinOrder .value = await get_order (newAccount .id ).catch (handleError)
822
787
await update_render (newAccount .id )
823
788
})
824
789
0 commit comments