118 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import React, { useState } from "react";
 | ||
| import {
 | ||
|   View,
 | ||
|   Text,
 | ||
|   TouchableOpacity,
 | ||
|   ScrollView,
 | ||
|   Image,
 | ||
|   ToastAndroid,
 | ||
|   Platform,
 | ||
| } from "react-native";
 | ||
| import { useNavigation } from "@react-navigation/native";
 | ||
| import * as Updates from "expo-updates";
 | ||
| import { AS } from "../../storageControl";
 | ||
| import icons from "../../assets/icons/icons";
 | ||
| import { setAlternateAppIcon, getAppIconName } from "expo-alternate-app-icons";
 | ||
| import { widthPercentageToDP } from "react-native-responsive-screen";
 | ||
| import { SheetHeaderItem } from "../atom/SheetHeaderItem";
 | ||
| 
 | ||
| export const LauncherIconSettings = ({ navigate }) => {
 | ||
|   const { goBack } = useNavigation();
 | ||
|   const [iconList] = useState(icons());
 | ||
|   const [currentIcon] = useState(getAppIconName());
 | ||
|   return (
 | ||
|     <View style={{ height: "100%", backgroundColor: "#0099CC" }}>
 | ||
|       <SheetHeaderItem title="アイコン設定" LeftItem={{ title: "< 設定", onPress: goBack }} />
 | ||
|       <ScrollView style={{ flex: 1, backgroundColor: "white" }}>
 | ||
|         {currentIcon ? (
 | ||
|           <>
 | ||
|             <Text
 | ||
|               style={{
 | ||
|                 backgroundColor: "#DDDDDD",
 | ||
|               }}
 | ||
|             >
 | ||
|               現在のアイコン:
 | ||
|               {iconList.filter(({ id }) => id == currentIcon)[0].id}
 | ||
|             </Text>
 | ||
| 
 | ||
|             <View
 | ||
|               style={{
 | ||
|                 flexDirection: "cokumn",
 | ||
|                 alignItems: "center",
 | ||
|                 justifyContent: "center",
 | ||
|                 backgroundColor: "#DDDDDD",
 | ||
|                 padding: 10,
 | ||
|               }}
 | ||
|             >
 | ||
|               <Image
 | ||
|                 source={iconList.filter(({ id }) => id == currentIcon)[0].icon}
 | ||
|                 style={{
 | ||
|                   width: 50,
 | ||
|                   height: 50,
 | ||
|                   padding: 30,
 | ||
|                   borderWidth: 1,
 | ||
|                   borderRadius: 10,
 | ||
|                   borderColor: "white",
 | ||
|                   margin: 10,
 | ||
|                   backgroundColor: "white",
 | ||
|                 }}
 | ||
|               />
 | ||
|               <Text>JR四国非公式アプリ</Text>
 | ||
|             </View>
 | ||
|           </>
 | ||
|         ) : (
 | ||
|           <></>
 | ||
|         )}
 | ||
|         <View
 | ||
|           style={{
 | ||
|             flexDirection: "row",
 | ||
|             flexWrap: "wrap",
 | ||
|             alignContent: "center",
 | ||
|             justifyContent: "center",
 | ||
|           }}
 | ||
|         >
 | ||
|           {iconList.map(({ name, icon, id }) => {
 | ||
|             return (
 | ||
|               <TouchableOpacity
 | ||
|                 key={id}
 | ||
|                 style={{
 | ||
|                   margin: 10,
 | ||
|                   alignItems: "center",
 | ||
|                   justifyContent: "center",
 | ||
|                   width: widthPercentageToDP("30%"),
 | ||
|                   maxWidth: 60,
 | ||
|                   height: 100,
 | ||
| 
 | ||
|                   borderColor: "#999999",
 | ||
|                   borderWidth: id == currentIcon ? 2 : 0,
 | ||
|                   borderRadius: 10,
 | ||
|                 }}
 | ||
|                 onPress={() => {
 | ||
|                   setAlternateAppIcon(id)
 | ||
|                     .then((res) => {
 | ||
|                       AS.setItem("isSetIcon", "true");
 | ||
|                       if (Platform.OS === "android") {
 | ||
|                         ToastAndroid.show(
 | ||
|                           "アイコンを変更しました。アプリを再起動します。",
 | ||
|                           ToastAndroid.SHORT
 | ||
|                         );
 | ||
|                       } else if (Platform.OS === "ios") {
 | ||
|                         Updates.reloadAsync();
 | ||
|                       }
 | ||
|                     })
 | ||
|                     .catch((err) => {
 | ||
|                       alert(err);
 | ||
|                     });
 | ||
|                 }}
 | ||
|               >
 | ||
|                 <Image source={icon} style={{ width: 50, height: 50 }} />
 | ||
|                 <Text>{id}</Text>
 | ||
|               </TouchableOpacity>
 | ||
|             );
 | ||
|           })}
 | ||
|         </View>
 | ||
|       </ScrollView>
 | ||
|     </View>
 | ||
|   );
 | ||
| };
 |