diff --git a/components/Settings/FavoliteSettings/FavoiliteSettingsItem.js b/components/Settings/FavoliteSettings/FavoiliteSettingsItem.js
new file mode 100644
index 0000000..99f5754
--- /dev/null
+++ b/components/Settings/FavoliteSettings/FavoiliteSettingsItem.js
@@ -0,0 +1,125 @@
+import React, { useEffect, useState } from "react";
+import Icon from "react-native-vector-icons/Entypo";
+import { View, Text, TouchableOpacity, LayoutAnimation } from "react-native";
+import lineColorList from "../../../assets/originData/lineColorList";
+import { AS } from "../../../storageControl";
+
+export const FavoriteSettingsItem = ({
+ currentStation,
+ setFavoriteStation,
+ index,
+ array,
+}) => {
+ const lineIDs = [];
+ const EachIDs = [];
+ console.log(currentStation);
+ currentStation.forEach((d) => {
+ if (!d.StationNumber) return;
+ const textArray = d.StationNumber.split("");
+ lineIDs.push(textArray.filter((s) => "A" < s && s < "Z").join(""));
+ EachIDs.push(textArray.filter((s) => "0" <= s && s <= "9").join(""));
+ });
+ const [head, setHead] = useState(false);
+ const [tail, setTail] = useState(false);
+ useEffect(() => {
+ if (index == 0) {
+ setHead(true);
+ } else if (index == array.length - 1) {
+ setTail(true);
+ } else {
+ setHead(false);
+ setTail(false);
+ }
+ }, [array]);
+
+ return (
+
+
+ {lineIDs.map((lineID, index) => (
+
+
+
+ {lineIDs[index]}
+ {"\n"}
+ {EachIDs[index]}
+
+
+
+ ))}
+
+
+
+ {currentStation[0].Station_JP}
+
+ {
+ console.log("up");
+ LayoutAnimation.configureNext(
+ LayoutAnimation.Presets.easeInEaseOut
+ );
+ const removedStation = [...array].filter((d, i) => {
+ if (i == index) return false;
+ return true;
+ });
+ removedStation.splice(index - 1, 0, currentStation);
+ setFavoriteStation(removedStation);
+
+ AS.setItem("favoriteStation", JSON.stringify(removedStation));
+ }}
+ >
+ {head ? null : }
+
+ {
+ console.log("down");
+ LayoutAnimation.configureNext(
+ LayoutAnimation.Presets.easeInEaseOut
+ );
+ const removedStation = [...array].filter((d, i) => {
+ if (i == index) return false;
+ return true;
+ });
+ removedStation.splice(index + 1, 0, currentStation);
+ setFavoriteStation(removedStation);
+ AS.setItem("favoriteStation", JSON.stringify(removedStation));
+ }}
+ >
+ {tail ? null : }
+
+
+
+ );
+};
diff --git a/components/Settings/FavoriteSettings.js b/components/Settings/FavoriteSettings.js
new file mode 100644
index 0000000..11bd97f
--- /dev/null
+++ b/components/Settings/FavoriteSettings.js
@@ -0,0 +1,81 @@
+import React from "react";
+import { View, Text, TouchableOpacity, ScrollView } from "react-native";
+import { useFavoriteStation } from "../../stateBox/useFavoriteStation";
+import { CheckBox } from "react-native-elements";
+import { FavoriteSettingsItem } from "./FavoliteSettings/FavoiliteSettingsItem";
+
+export const FavoriteSettings = ({ navigate }) => {
+ const { favoriteStation, setFavoriteStation } = useFavoriteStation();
+ return (
+
+
+
+ navigate("settingTopPage")}
+ style={{
+ flexDirection: "column",
+ flex: 1,
+ }}
+ >
+
+
+ < 設定
+
+
+
+
+
+
+ お気に入り設定
+
+
+
+
+ {favoriteStation.map((currentStation, index, array) => (
+
+ ))}
+
+
+ );
+};
+
+const SimpleSwitch = ({ bool, setBool, str }) => (
+
+ setBool(bool == "true" ? "false" : "true")}
+ containerStyle={{
+ flex: 1,
+ backgroundColor: "#00000000",
+ borderColor: "white",
+ alignContent: "center",
+ }}
+ textStyle={{ fontSize: 20, fontWeight: "normal" }}
+ title={str}
+ />
+
+);
diff --git a/components/Settings/SettingTopPage.js b/components/Settings/SettingTopPage.js
index ec16df8..5db3529 100644
--- a/components/Settings/SettingTopPage.js
+++ b/components/Settings/SettingTopPage.js
@@ -115,7 +115,10 @@ export const SettingTopPage = ({
- {}}>
+ navigate("FavoriteSettings")}
+ >
- お気に入り登録の管理(工事中)
+ お気に入り登録の並び替え
{(props) => }
+
+ {(props) => }
+
);
}
diff --git a/components/駅名表/Sign.js b/components/駅名表/Sign.js
index 1a139d2..852f9ec 100644
--- a/components/駅名表/Sign.js
+++ b/components/駅名表/Sign.js
@@ -1,4 +1,4 @@
-import React, { useRef, useState, useEffect } from "react";
+import React, { useRef, useState, useEffect, useLayoutEffect } from "react";
import { View, Text, TouchableOpacity } from "react-native";
import { widthPercentageToDP as wp } from "react-native-responsive-screen";
import LottieView from "lottie-react-native";
@@ -16,7 +16,7 @@ export default function Sign(props) {
const [preStation, setPreStation] = useState();
const [nexStation, setNexStation] = useState();
const [testButtonStatus, setTestButtonStatus] = useState(false);
- useEffect(() => {
+ useLayoutEffect(() => {
const isFavorite = favoriteStation.filter((d) => {
const compare = JSON.stringify(d);
const current = JSON.stringify(currentStation);