@@ -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,18 @@ const filteredResults = computed(() => {
391
387
return saves
392
388
})
393
389
394
- const moveCard = async (move , skin ) => {
395
- let sorted = Array .from (skinSaves .value )
396
- if (Filters .value .filter === ' Current user' ) {
397
- sorted = sorted .filter ((save ) => {
398
- return save .user === selectedAccount .value .id
399
- })
390
+ const moveCard = async (move , id ) => {
391
+ let index = skinOrder .value .indexOf (id)
392
+ if (index == 0 && move == - 1 ) {
393
+ return
400
394
}
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)
395
+ if (index == skinOrder .value .length - 1 && move == 1 ) {
396
+ return
397
+ }
398
+ let targetIndex = index + move
399
+ skinOrder .value .splice (index, 1 )
400
+ skinOrder .value .splice (targetIndex, 0 , id)
401
+ await save_order (skinOrder .value , selectedAccount .value .id )
413
402
}
414
403
415
404
const handleRightClick = (event , item ) => {
@@ -462,10 +451,10 @@ const handleOptionsClick = async (args) => {
462
451
await handleSkin (' upload' )
463
452
break
464
453
case ' left' :
465
- if (Filters .value .sort === ' Custom' ) await moveCard (- 1 , args .item )
454
+ if (Filters .value .sort === ' Custom' ) await moveCard (- 1 , args .item . id )
466
455
break
467
456
case ' right' :
468
- if (Filters .value .sort === ' Custom' ) await moveCard (1 , args .item )
457
+ if (Filters .value .sort === ' Custom' ) await moveCard (1 , args .item . id )
469
458
break
470
459
case ' edit' :
471
460
await edit_skin (args .item )
@@ -482,18 +471,7 @@ const handleOptionsClick = async (args) => {
482
471
483
472
const deleteSkin = async () => {
484
473
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)
474
+ await delete_skin (selectedSkin .value .id ).catch (handleError)
497
475
InLibrary .value = await check_skin (skinData .value .skin , selectedAccount .value .id ).catch (
498
476
handleError,
499
477
)
@@ -524,13 +502,12 @@ const next = async () => {
524
502
handleError,
525
503
)
526
504
const model = await get_render (data).catch (handleError)
527
- shiftSaves (0 , true )
528
- await update_skins (skinSaves .value ).catch (handleError)
529
505
await save_skin (selectedAccount .value .id , data, skin .name , model, ' ' ).catch (handleError)
530
506
skin .selected = false
531
507
importedSkins .value ++
532
508
}
533
509
skinSaves .value = await get_skins ().catch (handleError)
510
+ skinOrder .value = await get_order (selectedAccount .value .id ).catch (handleError)
534
511
loading .value = false
535
512
skinModal .value .hide ()
536
513
}
@@ -553,6 +530,7 @@ const handleAdd = async () => {
553
530
handleError,
554
531
)
555
532
skinSaves .value = await get_skins ().catch (handleError)
533
+ skinOrder .value = await get_order (selectedAccount .value .id ).catch (handleError)
556
534
InLibrary .value = true
557
535
}
558
536
@@ -595,8 +573,6 @@ const clickCard = (data) => {
595
573
596
574
const handleSkin = async (state ) => {
597
575
if (state .includes (' save' )) {
598
- shiftSaves (0 , true )
599
- await update_skins (skinSaves .value ).catch (handleError)
600
576
const model = await get_render (selectedSkin .value ).catch (handleError)
601
577
await save_skin (
602
578
selectedAccount .value .id ,
@@ -606,6 +582,7 @@ const handleSkin = async (state) => {
606
582
' ' ,
607
583
).catch (handleError)
608
584
skinSaves .value = await get_skins ().catch (handleError)
585
+ skinOrder .value = await get_order (selectedAccount .value .id ).catch (handleError)
609
586
}
610
587
if (state .includes (' upload' )) {
611
588
uploadingSkin .value = true
@@ -707,28 +684,9 @@ const duplicate_skin = async (args) => {
707
684
data .cape = args .cape
708
685
data .arms = args .arms
709
686
data .unlocked_capes = []
710
- shiftSaves (0 , true )
711
- await update_skins (skinSaves .value ).catch (handleError)
712
687
await save_skin (selectedAccount .value .id , data, args .name , args .model , ' ' ).catch (handleError)
713
688
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
- }
689
+ skinOrder .value = await get_order (selectedAccount .value .id ).catch (handleError)
732
690
}
733
691
734
692
const openskin = async () => {
@@ -819,6 +777,7 @@ const handleImportType = async () => {
819
777
}
820
778
821
779
watch (selectedAccount, async (newAccount ) => {
780
+ skinOrder .value = await get_order (newAccount .id ).catch (handleError)
822
781
await update_render (newAccount .id )
823
782
})
824
783
0 commit comments