@@ -12,6 +12,8 @@ const HomeOrder = () => {
1212 const settings = React . useContext ( SettingsContext )
1313 const setSettings = React . useContext ( SetSettingsContext )
1414 const theme = React . useContext ( ThemeContext )
15+ const [ indexMoving , setIndexMoving ] = React . useState ( - 1 )
16+ const [ moveToIndex , setMoveToIndex ] = React . useState ( - 1 )
1517
1618 const moveElement = ( index , direction ) => {
1719 let newIndex = index + direction
@@ -28,7 +30,7 @@ const HomeOrder = () => {
2830 }
2931 setSettings ( { ...settings , homeOrderV2 : newHomeOrder } )
3032 }
31-
33+
3234 const onPressHomeOrder = ( index ) => {
3335 const newHomeOrder = [ ...settings . homeOrderV2 ]
3436 newHomeOrder [ index ] . enable = ! newHomeOrder [ index ] . enable
@@ -47,12 +49,17 @@ const HomeOrder = () => {
4749 onPanResponderGrant : ( _ , gestureState ) => {
4850 startMove . current = gestureState . y0
4951 position . setValue ( 0 )
52+ setIndexMoving ( index )
53+ setMoveToIndex ( index )
5054 } ,
5155 onPanResponderMove : ( _ , gestureState ) => {
5256 const move = gestureState . moveY - startMove . current
5357 position . setValue ( move )
58+ setMoveToIndex ( index + Math . round ( move / 50 ) )
5459 } ,
5560 onPanResponderRelease : ( ) => {
61+ setIndexMoving ( - 1 )
62+ setMoveToIndex ( - 1 )
5663 if ( position . _value === 0 ) {
5764 onPressHomeOrder ( index )
5865 }
@@ -63,14 +70,22 @@ const HomeOrder = () => {
6370 } )
6471 const section = React . useMemo ( ( ) => homeSections . find ( s => s . id === value . id ) , [ value . id ] )
6572
73+ const translateY = ( ) => {
74+ if ( index === indexMoving ) return position
75+ if ( indexMoving === - 1 ) return 0
76+ if ( index > indexMoving && index <= moveToIndex ) return - 50
77+ if ( index < indexMoving && index >= moveToIndex ) return 50
78+ return 0
79+ }
80+
6681 return (
6782 < Animated . View
6883 key = { index }
6984 style = { [
7085 settingStyles . optionItem ( theme , index == settings . homeOrderV2 . length - 1 ) ,
7186 {
7287 cursor : 'pointer' ,
73- transform : [ { translateY : position } ]
88+ transform : [ { translateY : translateY ( ) } ]
7489 }
7590 ] }
7691 >
0 commit comments