diff --git a/android/app/build.gradle b/android/app/build.gradle index b28a0f9df..9ceba4d60 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -141,12 +141,12 @@ android { dimension "environment" applicationId "me.tinykitten.trainlcd.dev" versionNameSuffix "-dev" - versionCode 100000351 + versionCode 100000352 versionName "10.3.1" } prod { dimension "environment" - versionCode 100000351 + versionCode 100000352 versionName "10.3.1" } } diff --git a/app.config.ts b/app.config.ts index d668f15ac..e27e2ec84 100644 --- a/app.config.ts +++ b/app.config.ts @@ -53,7 +53,7 @@ export default ({ config }: ConfigContext) => ({ }, }, ios: { - buildNumber: '2564', + buildNumber: '2565', bundleIdentifier: process.env.EAS_BUILD_PROFILE === 'production' ? 'me.tinykitten.trainlcd' @@ -70,7 +70,7 @@ export default ({ config }: ConfigContext) => ({ ? 'me.tinykitten.trainlcd' : 'me.tinykitten.trainlcd.dev', permissions: [], - versionCode: 100000351, + versionCode: 100000352, }, owner: 'trainlcd', }); @@ -127,5 +127,6 @@ export default ({ config }: ConfigContext) => ({ + diff --git a/assets/images/themes/odakyu-sp.webp b/assets/images/themes/odakyu-sp.webp index 40a82c7bb..859136182 100644 Binary files a/assets/images/themes/odakyu-sp.webp and b/assets/images/themes/odakyu-sp.webp differ diff --git a/assets/images/themes/odakyu-tablet.webp b/assets/images/themes/odakyu-tablet.webp index daa424227..11d324cb1 100644 Binary files a/assets/images/themes/odakyu-tablet.webp and b/assets/images/themes/odakyu-tablet.webp differ diff --git a/ios/TrainLCD.xcodeproj/project.pbxproj b/ios/TrainLCD.xcodeproj/project.pbxproj index ba1cc9e13..750308c1b 100644 --- a/ios/TrainLCD.xcodeproj/project.pbxproj +++ b/ios/TrainLCD.xcodeproj/project.pbxproj @@ -2419,7 +2419,7 @@ CODE_SIGN_ENTITLEMENTS = ProdTrainLCD.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = E6R2G33Z36; INFOPLIST_FILE = TrainLCD/Schemes/Prod/Info.plist; @@ -2458,7 +2458,7 @@ CODE_SIGN_ENTITLEMENTS = ProdTrainLCD.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEVELOPMENT_TEAM = E6R2G33Z36; INFOPLIST_FILE = TrainLCD/Schemes/Prod/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = TrainLCD; @@ -2517,7 +2517,7 @@ CODE_SIGN_ENTITLEMENTS = TrainLCD/trainlcd.entitlements; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; CXX = "$(REACT_NATIVE_PATH)/scripts/xcode/ccache-clang++.sh"; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -2623,7 +2623,7 @@ CODE_SIGN_ENTITLEMENTS = TrainLCD/trainlcd.entitlements; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; CXX = "$(REACT_NATIVE_PATH)/scripts/xcode/ccache-clang++.sh"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -2702,7 +2702,7 @@ CODE_SIGN_ENTITLEMENTS = CanaryTrainLCD.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = E6R2G33Z36; INFOPLIST_FILE = TrainLCD/Schemes/Dev/Info.plist; @@ -2741,7 +2741,7 @@ CODE_SIGN_ENTITLEMENTS = CanaryTrainLCD.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; INFOPLIST_FILE = TrainLCD/Schemes/Dev/Info.plist; @@ -2952,7 +2952,7 @@ CODE_SIGN_ENTITLEMENTS = RideSessionActivity/CanaryRideSessionActivity.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3003,7 +3003,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3054,7 +3054,7 @@ CODE_SIGN_ENTITLEMENTS = WatchWidget/ProdWatchWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -3112,7 +3112,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -3163,7 +3163,7 @@ CODE_SIGN_ENTITLEMENTS = WatchWidget/CanaryWatchWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -3220,7 +3220,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -3268,7 +3268,7 @@ CODE_SIGN_ENTITLEMENTS = RideSessionActivity/ProdRideSessionActivity.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3319,7 +3319,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3538,7 +3538,7 @@ CODE_SIGN_ENTITLEMENTS = ProdAppClip/ProdAppClip.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -3594,7 +3594,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -3644,7 +3644,7 @@ CODE_SIGN_ENTITLEMENTS = CanaryAppClip/CanaryAppClip.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -3702,7 +3702,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2564; + CURRENT_PROJECT_VERSION = 2565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = NO; diff --git a/src/components/LineBoardEast.tsx b/src/components/LineBoardEast.tsx index 7f422f440..4b55d9e30 100644 --- a/src/components/LineBoardEast.tsx +++ b/src/components/LineBoardEast.tsx @@ -1,7 +1,7 @@ import { LinearGradient } from 'expo-linear-gradient'; import { useAtomValue } from 'jotai'; import React, { useCallback, useMemo, useState } from 'react'; -import { useWindowDimensions, View } from 'react-native'; +import { StyleSheet, useWindowDimensions, View } from 'react-native'; import type { Line, Station } from '~/@types/graphql'; import { useCurrentLine, @@ -31,6 +31,44 @@ import { STATION_NAME_CONTAINER_BOTTOM, commonLineBoardStyles as styles, } from './LineBoard/shared/styles/commonStyles'; +import NumberingIcon from './NumberingIcon'; + +const localStyles = StyleSheet.create({ + numberingIconContainer: { + position: 'absolute', + width: isTablet ? 96 : 64, + height: isTablet ? 96 : 64, + bottom: isTablet ? -22 : 52, + left: isTablet ? -24 : -16, + transform: [{ scale: 0.5 }], + justifyContent: 'center', + alignItems: 'center', + overflow: 'visible', + }, +}); + +const NumberingIconView: React.FC<{ station: Station }> = ({ station }) => { + const numberingObj = useMemo( + () => station.stationNumbers?.[0], + [station.stationNumbers] + ); + + if (!numberingObj?.lineSymbolShape || !numberingObj?.stationNumber) { + return null; + } + + return ( + + + + ); +}; type Props = { lineColors: (string | null | undefined)[]; @@ -273,6 +311,24 @@ const StationNameCell: React.FC = ({ const dim = useWindowDimensions(); + const hasDrawableNumbering = useMemo( + () => + station.stationNumbers?.some( + (sn) => sn?.lineSymbolShape && sn?.stationNumber + ) ?? false, + [station.stationNumbers] + ); + + const nameCommonStyle = useMemo(() => { + if (!isOdakyu || !hasDrawableNumbering) { + return styles.nameCommon; + } + return { + ...styles.nameCommon, + marginBottom: isTablet ? 45 : 95, + }; + }, [isOdakyu, hasDrawableNumbering]); + return ( <> = ({ > = ({ passed={getIsPass(station) || shouldGrayscale} /> + {isOdakyu ? : null} {renderBarGradients({ barLeft, barWidth,