update
This commit is contained in:
134
ios/AppInfo.tsx
Normal file
134
ios/AppInfo.tsx
Normal file
@@ -0,0 +1,134 @@
|
||||
import React from 'react'
|
||||
import {View, Text, StyleSheet, Pressable, Linking} from 'react-native'
|
||||
|
||||
interface AppInfoProps {
|
||||
onLinkPress?: (url: string) => void
|
||||
}
|
||||
|
||||
export default function AppInfo({onLinkPress}: AppInfoProps) {
|
||||
const handleLinkPress = (url: string) => {
|
||||
if (onLinkPress) {
|
||||
onLinkPress(url)
|
||||
} else {
|
||||
Linking.openURL(url)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>About This App</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
This is a customized AT Protocol social networking client. It allows you to
|
||||
connect to any Personal Data Server (PDS) and participate in the decentralized
|
||||
social network.
|
||||
</Text>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>Key Features</Text>
|
||||
<View style={styles.list}>
|
||||
<Text style={styles.listItem}>• Connect to any AT Protocol PDS</Text>
|
||||
<Text style={styles.listItem}>• Post text, images, and videos</Text>
|
||||
<Text style={styles.listItem}>• Follow users and view timelines</Text>
|
||||
<Text style={styles.listItem}>• Customize feeds and moderation settings</Text>
|
||||
<Text style={styles.listItem}>• Direct messaging support</Text>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>Open Source</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
This application is based on the Bluesky social-app, licensed under the MIT
|
||||
License. The original source code is available at:
|
||||
</Text>
|
||||
<Pressable
|
||||
onPress={() =>
|
||||
handleLinkPress('https://github.com/bluesky-social/social-app')
|
||||
}>
|
||||
<Text style={styles.link}>github.com/bluesky-social/social-app</Text>
|
||||
</Pressable>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>AT Protocol</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
This app uses the AT Protocol (Authenticated Transfer Protocol), an open and
|
||||
decentralized standard for social applications.
|
||||
</Text>
|
||||
<Pressable onPress={() => handleLinkPress('https://atproto.com')}>
|
||||
<Text style={styles.link}>atproto.com</Text>
|
||||
</Pressable>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>License</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
Copyright 2023–2025 Bluesky Social PBC
|
||||
</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software.
|
||||
</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
|
||||
</Text>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>Contact</Text>
|
||||
<Pressable onPress={() => handleLinkPress('https://syu.is')}>
|
||||
<Text style={styles.link}>https://syu.is</Text>
|
||||
</Pressable>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.versionText}>Version 1.0.0</Text>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
},
|
||||
section: {
|
||||
marginBottom: 24,
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 20,
|
||||
fontWeight: '600',
|
||||
color: '#1d1d1f',
|
||||
marginBottom: 12,
|
||||
},
|
||||
paragraph: {
|
||||
fontSize: 15,
|
||||
lineHeight: 22,
|
||||
color: '#3a3a3c',
|
||||
marginBottom: 8,
|
||||
},
|
||||
list: {
|
||||
marginLeft: 8,
|
||||
marginTop: 8,
|
||||
},
|
||||
listItem: {
|
||||
fontSize: 15,
|
||||
lineHeight: 24,
|
||||
color: '#3a3a3c',
|
||||
},
|
||||
link: {
|
||||
fontSize: 15,
|
||||
color: '#007aff',
|
||||
textDecorationLine: 'underline',
|
||||
marginTop: 8,
|
||||
},
|
||||
versionText: {
|
||||
fontSize: 13,
|
||||
color: '#8e8e93',
|
||||
fontStyle: 'italic',
|
||||
},
|
||||
})
|
||||
95
ios/LicenseNotice.tsx
Normal file
95
ios/LicenseNotice.tsx
Normal file
@@ -0,0 +1,95 @@
|
||||
import React from 'react'
|
||||
import {View, Text, StyleSheet, Pressable, Linking} from 'react-native'
|
||||
|
||||
export default function LicenseNotice() {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text style={styles.title}>Open Source Licenses</Text>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.projectName}>Bluesky Social App</Text>
|
||||
<Text style={styles.license}>MIT License</Text>
|
||||
<Text style={styles.copyright}>Copyright 2023–2025 Bluesky Social PBC</Text>
|
||||
|
||||
<Text style={styles.licenseText}>
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
</Text>
|
||||
|
||||
<Text style={styles.licenseText}>
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
</Text>
|
||||
|
||||
<Text style={styles.licenseText}>
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
</Text>
|
||||
|
||||
<Pressable
|
||||
onPress={() =>
|
||||
Linking.openURL('https://github.com/bluesky-social/social-app')
|
||||
}>
|
||||
<Text style={styles.link}>View Source Code</Text>
|
||||
</Pressable>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
padding: 16,
|
||||
},
|
||||
title: {
|
||||
fontSize: 24,
|
||||
fontWeight: 'bold',
|
||||
marginBottom: 20,
|
||||
color: '#1d1d1f',
|
||||
},
|
||||
section: {
|
||||
marginBottom: 24,
|
||||
padding: 16,
|
||||
backgroundColor: '#f5f5f7',
|
||||
borderRadius: 8,
|
||||
},
|
||||
projectName: {
|
||||
fontSize: 18,
|
||||
fontWeight: '600',
|
||||
marginBottom: 8,
|
||||
color: '#1d1d1f',
|
||||
},
|
||||
license: {
|
||||
fontSize: 14,
|
||||
fontWeight: '500',
|
||||
color: '#007aff',
|
||||
marginBottom: 4,
|
||||
},
|
||||
copyright: {
|
||||
fontSize: 13,
|
||||
color: '#3a3a3c',
|
||||
marginBottom: 12,
|
||||
},
|
||||
licenseText: {
|
||||
fontSize: 12,
|
||||
lineHeight: 18,
|
||||
color: '#3a3a3c',
|
||||
marginBottom: 12,
|
||||
},
|
||||
link: {
|
||||
fontSize: 14,
|
||||
color: '#007aff',
|
||||
textDecorationLine: 'underline',
|
||||
marginTop: 8,
|
||||
},
|
||||
})
|
||||
163
ios/PrivacyContent.tsx
Normal file
163
ios/PrivacyContent.tsx
Normal file
@@ -0,0 +1,163 @@
|
||||
import React from 'react'
|
||||
import {View, Text, StyleSheet, Pressable, Linking} from 'react-native'
|
||||
|
||||
interface PrivacyContentProps {
|
||||
onLinkPress?: (url: string) => void
|
||||
}
|
||||
|
||||
export default function PrivacyContent({onLinkPress}: PrivacyContentProps) {
|
||||
const handleLinkPress = (url: string) => {
|
||||
if (onLinkPress) {
|
||||
onLinkPress(url)
|
||||
} else {
|
||||
Linking.openURL(url)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>Introduction</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
This Privacy Policy explains how this AT Protocol client application
|
||||
(hereinafter referred to as "the App") handles personal information.
|
||||
Please read this policy carefully before using the App.
|
||||
</Text>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>Information We Collect</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
The App may collect and use the following information:
|
||||
</Text>
|
||||
|
||||
<Text style={styles.subTitle}>1. Information Collected Automatically</Text>
|
||||
<View style={styles.list}>
|
||||
<Text style={styles.listItem}>• Device information (model, OS version)</Text>
|
||||
<Text style={styles.listItem}>• App usage data (sessions, features used)</Text>
|
||||
<Text style={styles.listItem}>• Crash logs and performance data</Text>
|
||||
</View>
|
||||
|
||||
<Text style={styles.subTitle}>2. Information Provided by Users</Text>
|
||||
<View style={styles.list}>
|
||||
<Text style={styles.listItem}>
|
||||
• DID (Decentralized Identifier) and handle for authentication
|
||||
</Text>
|
||||
<Text style={styles.listItem}>• Posts, media, and social interactions</Text>
|
||||
<Text style={styles.listItem}>• Profile information (avatar, display name, bio)</Text>
|
||||
</View>
|
||||
|
||||
<View style={styles.highlight}>
|
||||
<Text style={styles.highlightText}>
|
||||
Important: Your data is stored on your chosen PDS (Personal Data Server).
|
||||
This app does not store your content on our servers.
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>How We Use Your Information</Text>
|
||||
<View style={styles.list}>
|
||||
<Text style={styles.listItem}>
|
||||
• To provide AT Protocol social networking features
|
||||
</Text>
|
||||
<Text style={styles.listItem}>• To improve app performance and user experience</Text>
|
||||
<Text style={styles.listItem}>• To diagnose and fix technical issues</Text>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>Data Sharing</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
The App interacts with your chosen PDS and AppView services. Your posts and
|
||||
profile information are shared according to the AT Protocol specification and
|
||||
your privacy settings.
|
||||
</Text>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>Your Rights</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
You have the right to access, modify, or delete your data through your PDS.
|
||||
You can also switch to a different PDS at any time while maintaining your
|
||||
identity.
|
||||
</Text>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>Contact</Text>
|
||||
<Text style={styles.paragraph}>
|
||||
For questions about this Privacy Policy, please contact:
|
||||
</Text>
|
||||
<Pressable onPress={() => handleLinkPress('https://syu.is')}>
|
||||
<Text style={styles.link}>https://syu.is</Text>
|
||||
</Pressable>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<Text style={styles.lastUpdated}>Last Updated: December 3, 2025</Text>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
},
|
||||
section: {
|
||||
marginBottom: 24,
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 20,
|
||||
fontWeight: '600',
|
||||
color: '#1d1d1f',
|
||||
marginBottom: 12,
|
||||
},
|
||||
subTitle: {
|
||||
fontSize: 16,
|
||||
fontWeight: '500',
|
||||
color: '#1d1d1f',
|
||||
marginTop: 12,
|
||||
marginBottom: 8,
|
||||
},
|
||||
paragraph: {
|
||||
fontSize: 15,
|
||||
lineHeight: 22,
|
||||
color: '#3a3a3c',
|
||||
marginBottom: 8,
|
||||
},
|
||||
list: {
|
||||
marginLeft: 8,
|
||||
marginTop: 8,
|
||||
},
|
||||
listItem: {
|
||||
fontSize: 15,
|
||||
lineHeight: 24,
|
||||
color: '#3a3a3c',
|
||||
},
|
||||
highlight: {
|
||||
backgroundColor: '#fff3cd',
|
||||
borderLeftWidth: 4,
|
||||
borderLeftColor: '#ffc107',
|
||||
padding: 12,
|
||||
marginTop: 12,
|
||||
borderRadius: 4,
|
||||
},
|
||||
highlightText: {
|
||||
fontSize: 14,
|
||||
lineHeight: 20,
|
||||
color: '#856404',
|
||||
},
|
||||
link: {
|
||||
fontSize: 15,
|
||||
color: '#007aff',
|
||||
textDecorationLine: 'underline',
|
||||
marginTop: 8,
|
||||
},
|
||||
lastUpdated: {
|
||||
fontSize: 13,
|
||||
color: '#8e8e93',
|
||||
fontStyle: 'italic',
|
||||
},
|
||||
})
|
||||
42
ios/PrivacyPolicy.screen.tsx
Normal file
42
ios/PrivacyPolicy.screen.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
import React from 'react'
|
||||
import {View} from 'react-native'
|
||||
import {msg} from '@lingui/macro'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {useFocusEffect} from '@react-navigation/native'
|
||||
|
||||
import {usePalette} from '#/lib/hooks/usePalette'
|
||||
import {
|
||||
type CommonNavigatorParams,
|
||||
type NativeStackScreenProps,
|
||||
} from '#/lib/routes/types'
|
||||
import {s} from '#/lib/styles'
|
||||
import {useSetMinimalShellMode} from '#/state/shell'
|
||||
import {ScrollView} from '#/view/com/util/Views'
|
||||
import * as Layout from '#/components/Layout'
|
||||
import {ViewHeader} from '../com/util/ViewHeader'
|
||||
import PrivacyContent from '#/components/custom/PrivacyContent'
|
||||
|
||||
type Props = NativeStackScreenProps<CommonNavigatorParams, 'PrivacyPolicy'>
|
||||
export const PrivacyPolicyScreen = (_props: Props) => {
|
||||
const pal = usePalette('default')
|
||||
const {_} = useLingui()
|
||||
const setMinimalShellMode = useSetMinimalShellMode()
|
||||
|
||||
useFocusEffect(
|
||||
React.useCallback(() => {
|
||||
setMinimalShellMode(false)
|
||||
}, [setMinimalShellMode]),
|
||||
)
|
||||
|
||||
return (
|
||||
<Layout.Screen>
|
||||
<ViewHeader title={_(msg`Privacy Policy`)} />
|
||||
<ScrollView style={[s.hContentRegion, pal.view]}>
|
||||
<View style={[s.p20]}>
|
||||
<PrivacyContent />
|
||||
</View>
|
||||
<View style={s.footerSpacer} />
|
||||
</ScrollView>
|
||||
</Layout.Screen>
|
||||
)
|
||||
}
|
||||
38
ios/Support.screen.tsx
Normal file
38
ios/Support.screen.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
import React from 'react'
|
||||
import {msg} from '@lingui/macro'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {useFocusEffect} from '@react-navigation/native'
|
||||
|
||||
import {usePalette} from '#/lib/hooks/usePalette'
|
||||
import {
|
||||
type CommonNavigatorParams,
|
||||
type NativeStackScreenProps,
|
||||
} from '#/lib/routes/types'
|
||||
import {s} from '#/lib/styles'
|
||||
import {useSetMinimalShellMode} from '#/state/shell'
|
||||
import {ViewHeader} from '#/view/com/util/ViewHeader'
|
||||
import {ScrollView} from '#/view/com/util/Views'
|
||||
import * as Layout from '#/components/Layout'
|
||||
import AppInfo from '#/components/custom/AppInfo'
|
||||
|
||||
type Props = NativeStackScreenProps<CommonNavigatorParams, 'Support'>
|
||||
export const SupportScreen = (_props: Props) => {
|
||||
const pal = usePalette('default')
|
||||
const setMinimalShellMode = useSetMinimalShellMode()
|
||||
const {_} = useLingui()
|
||||
|
||||
useFocusEffect(
|
||||
React.useCallback(() => {
|
||||
setMinimalShellMode(false)
|
||||
}, [setMinimalShellMode]),
|
||||
)
|
||||
|
||||
return (
|
||||
<Layout.Screen>
|
||||
<ViewHeader title={_(msg`App Info`)} />
|
||||
<ScrollView style={[s.hContentRegion, pal.view]}>
|
||||
<AppInfo />
|
||||
</ScrollView>
|
||||
</Layout.Screen>
|
||||
)
|
||||
}
|
||||
9
ios/app.config.patch.js
Normal file
9
ios/app.config.patch.js
Normal file
@@ -0,0 +1,9 @@
|
||||
// Aiat app configuration overrides
|
||||
module.exports = {
|
||||
name: 'Aiat',
|
||||
slug: 'aiat',
|
||||
scheme: 'aiat',
|
||||
owner: 'syui', // Your Expo account
|
||||
bundleIdentifier: 'ai.syui.at',
|
||||
// Icon will be set separately
|
||||
}
|
||||
44
ios/bin/build.zsh
Executable file
44
ios/bin/build.zsh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/zsh
|
||||
set -e
|
||||
|
||||
d=~/ai/at/repos/social-app
|
||||
APP_NAME=Aiat
|
||||
PKG=aiat
|
||||
TEAM_NAME=
|
||||
TEAM_ID=
|
||||
CERT="Apple Distribution: ${TEAM_NAME} (${TEAM_ID})"
|
||||
MAIL=user@example.com
|
||||
KEY_CHAIN=EXAMPLE
|
||||
|
||||
cd $d
|
||||
# npx expo prebuild --clean
|
||||
# cd ios && pod install && cd ..
|
||||
|
||||
## アーカイブ
|
||||
xcodebuild -workspace ios/${PKG}.xcworkspace \
|
||||
-scheme ${PKG} \
|
||||
-configuration Release \
|
||||
-archivePath build/${APP_NAME}.xcarchive \
|
||||
-allowProvisioningUpdates \
|
||||
archive
|
||||
|
||||
cd build
|
||||
|
||||
# IPA作成
|
||||
rm -rf Payload ${APP_NAME}.ipa
|
||||
mkdir -p Payload
|
||||
cp -R ${APP_NAME}.xcarchive/Products/Applications/${PKG}.app Payload/
|
||||
cp ../store.mobileprovision Payload/${PKG}.app/embedded.mobileprovision
|
||||
|
||||
# entitlements抽出
|
||||
security cms -D -i Payload/${PKG}.app/embedded.mobileprovision > /tmp/profile.plist
|
||||
/usr/libexec/PlistBuddy -x -c "Print :Entitlements" /tmp/profile.plist > /tmp/entitlements.plist
|
||||
|
||||
codesign -f -s "$CERT" Payload/${PKG}.app/Frameworks/*.framework 2>/dev/null || true
|
||||
codesign -f -s "$CERT" --entitlements /tmp/entitlements.plist Payload/${PKG}.app
|
||||
|
||||
zip -r ${APP_NAME}.ipa Payload
|
||||
|
||||
xcrun altool --upload-app -f ${APP_NAME}.ipa -t ios -u "${MAIL}" -p "@keychain:${KEY_CHAIN}"
|
||||
|
||||
echo "Upload complete"
|
||||
86
ios/bin/install.zsh
Normal file
86
ios/bin/install.zsh
Normal file
@@ -0,0 +1,86 @@
|
||||
#!/bin/zsh
|
||||
|
||||
if [ "$1" = "social-app-custom" ];then
|
||||
at-social-app-custom-pages
|
||||
at-social-app-custom-screens
|
||||
at-social-app-aiat-config
|
||||
at-social-app-aiat-logo
|
||||
at-origin-social-app
|
||||
exit
|
||||
fi
|
||||
|
||||
function at-social-app-custom-pages() {
|
||||
d_=$d/repos/social-app
|
||||
custom=$d/social-app-custom
|
||||
|
||||
echo "copying custom components to social-app"
|
||||
|
||||
# Create components directory if not exists
|
||||
mkdir -p ${d_}/src/components/custom
|
||||
|
||||
# Copy custom components
|
||||
cp ${custom}/PrivacyContent.tsx ${d_}/src/components/custom/
|
||||
cp ${custom}/AppInfo.tsx ${d_}/src/components/custom/
|
||||
|
||||
echo "custom components copied successfully"
|
||||
}
|
||||
|
||||
function at-social-app-aiat-config() {
|
||||
d_=$d/repos/social-app
|
||||
custom=$d/social-app-custom
|
||||
|
||||
echo "applying Aiat configuration"
|
||||
|
||||
# Update app.config.js
|
||||
cd ${d_}
|
||||
|
||||
# Backup original
|
||||
cp app.config.js app.config.js.orig
|
||||
|
||||
# Apply changes using sed
|
||||
sed -i "s/name: 'Bluesky'/name: 'Aiat'/g" app.config.js
|
||||
sed -i "s/slug: 'bluesky'/slug: 'aiat'/g" app.config.js
|
||||
sed -i "s/scheme: 'bluesky'/scheme: 'aiat'/g" app.config.js
|
||||
sed -i "s/owner: 'blueskysocial'/owner: 'syui'/g" app.config.js
|
||||
sed -i "s/bundleIdentifier: 'xyz.blueskyweb.app'/bundleIdentifier: 'ai.syui.at'/g" app.config.js
|
||||
|
||||
# Update package.json name
|
||||
sed -i 's/"name": "bsky.app"/"name": "aiat"/g' package.json
|
||||
|
||||
echo "Aiat configuration applied"
|
||||
}
|
||||
|
||||
function at-social-app-aiat-logo() {
|
||||
d_=$d/repos/social-app
|
||||
custom=$d/social-app-custom
|
||||
|
||||
echo "applying Aiat logo"
|
||||
|
||||
# Create logo directory if not exists
|
||||
mkdir -p ${custom}/assets
|
||||
|
||||
# Copy logo if exists in custom folder
|
||||
if [ -f ${custom}/assets/icon.png ]; then
|
||||
cp ${custom}/assets/icon.png ${d_}/assets/app-icons/ios_icon_default_next.png
|
||||
echo "Aiat logo applied"
|
||||
else
|
||||
echo "Warning: Logo file not found at ${custom}/assets/icon.png"
|
||||
echo "Please add your logo file there"
|
||||
fi
|
||||
}
|
||||
|
||||
function at-social-app-custom-screens() {
|
||||
d_=$d/repos/social-app
|
||||
custom=$d/social-app-custom
|
||||
|
||||
echo "applying custom screens"
|
||||
|
||||
# Copy custom screen files
|
||||
cp ${custom}/PrivacyPolicy.screen.tsx ${d_}/src/view/screens/PrivacyPolicy.tsx
|
||||
cp ${custom}/Support.screen.tsx ${d_}/src/view/screens/Support.tsx
|
||||
cp ${custom}/LicenseNotice.tsx ${d_}/src/components/custom/
|
||||
|
||||
echo "custom screens applied"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user