ai/at
1
0

add ios social-app

This commit is contained in:
2025-12-06 21:14:08 +09:00
parent 948551c185
commit ba50f383fb
58 changed files with 3757 additions and 637 deletions

View File

@@ -0,0 +1,318 @@
diff --git a/src/view/com/posts/PostFeed.tsx b/src/view/com/posts/PostFeed.tsx
index 4f25468c9..95b183dcc 100644
--- a/src/view/com/posts/PostFeed.tsx
+++ b/src/view/com/posts/PostFeed.tsx
@@ -298,8 +298,13 @@ let PostFeed = ({
}
}
} catch (e) {
+ const errorMsg = String(e)
+ // Skip errors for missing repos (deleted accounts)
+ if (errorMsg.includes('Could not find repo')) {
+ return
+ }
if (!isNetworkError(e)) {
- logger.error('Poll latest failed', {feed, message: String(e)})
+ logger.error('Poll latest failed', {feed, message: errorMsg})
}
}
})
diff --git a/src/view/screens/PrivacyPolicy.tsx b/src/view/screens/PrivacyPolicy.tsx
index a89eaadc4..c3a8b6114 100644
--- a/src/view/screens/PrivacyPolicy.tsx
+++ b/src/view/screens/PrivacyPolicy.tsx
@@ -1,51 +1,95 @@
import React from 'react'
-import {View} from 'react-native'
-import {msg, Trans} 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 {TextLink} from '#/view/com/util/Link'
-import {Text} from '#/view/com/util/text/Text'
-import {ScrollView} from '#/view/com/util/Views'
+import { ScrollView } from 'react-native'
import * as Layout from '#/components/Layout'
-import {ViewHeader} from '../com/util/ViewHeader'
-
-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]),
- )
+import {useSetTitle} from '#/lib/hooks/useSetTitle'
+import {atoms as a, useTheme} from '#/alf'
+import {Text} from '#/components/Typography'
+
+export function PrivacyPolicyScreen() {
+ useSetTitle('Privacy Policy')
+ const t = useTheme()
return (
<Layout.Screen>
- <ViewHeader title={_(msg`Privacy Policy`)} />
- <ScrollView style={[s.hContentRegion, pal.view]}>
- <View style={[s.p20]}>
- <Text style={pal.text}>
- <Trans>
- The Privacy Policy has been moved to{' '}
- <TextLink
- style={pal.link}
- href="https://bsky.social/about/support/privacy-policy"
- text="bsky.social/about/support/privacy-policy"
- />
- </Trans>
- </Text>
- </View>
- <View style={s.footerSpacer} />
+ <ScrollView
+ style={[a.flex_1, {backgroundColor: t.palette.white}]}
+ contentContainerStyle={[a.p_lg, a.pt_5xl, a.pb_5xl]}>
+ <Text style={[a.text_2xl, a.font_bold, a.mb_lg]}>Privacy Policy</Text>
+
+ <Text style={[a.mb_md]}>
+ This application (hereinafter referred to as "the App") respects user privacy and is committed to protecting personal information.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>1. Information We Collect</Text>
+ <Text style={[a.mb_md]}>
+ The App is a decentralized social network using the AT Protocol.
+ Information posted by users is stored on the selected server (PDS).
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>2. Use of Information</Text>
+ <Text style={[a.mb_md]}>
+ The collected information is used for the following purposes:
+ {'\n'}- Providing and operating the service
+ {'\n'}- User support
+ {'\n'}- Service improvement
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>3. Third-Party Disclosure</Text>
+ <Text style={[a.mb_md]}>
+ The App will not provide users' personal information to third parties without user consent, except as required by law.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>4. Security</Text>
+ <Text style={[a.mb_md]}>
+ The App takes appropriate security measures to protect personal information.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>5. Contact</Text>
+ <Text style={[a.mb_md]}>
+ For questions regarding this Privacy Policy, please contact us through the support link in the settings screen.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_5xl, a.mb_md]}>日本語訳(参考)</Text>
+
+ <Text style={[a.text_xl, a.font_bold, a.mb_lg]}>プライバシーポリシー</Text>
+
+ <Text style={[a.mb_md]}>
+ 本アプリケーション(以下「本アプリ」)は、ユーザーのプライバシーを尊重し、個人情報の保護に努めます。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>1. 収集する情報</Text>
+ <Text style={[a.mb_md]}>
+ 本アプリは、ATプロトコルを使用した分散型ソーシャルネットワークです。
+ ユーザーが投稿した情報は、選択したサーバーPDSに保存されます。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>2. 情報の利用目的</Text>
+ <Text style={[a.mb_md]}>
+ 収集した情報は、以下の目的で利用されます:
+ {'\n'}- サービスの提供・運営
+ {'\n'}- ユーザーサポート
+ {'\n'}- サービスの改善
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>3. 情報の第三者提供</Text>
+ <Text style={[a.mb_md]}>
+ 本アプリは、ユーザーの個人情報を、法令に基づく場合を除き、
+ ユーザーの同意なく第三者に提供することはありません。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>4. セキュリティ</Text>
+ <Text style={[a.mb_md]}>
+ 本アプリは、個人情報の保護のため、適切な安全対策を講じます。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>5. お問い合わせ</Text>
+ <Text style={[a.mb_md]}>
+ プライバシーポリシーに関するご質問は、設定画面のサポートリンクからお問い合わせください。
+ </Text>
+
+ <Text style={[a.text_sm, a.mt_xl, {color: t.palette.contrast_500}]}>
+ Last Updated: December 7, 2025
+ </Text>
</ScrollView>
</Layout.Screen>
)
diff --git a/src/view/screens/TermsOfService.tsx b/src/view/screens/TermsOfService.tsx
index d843c713c..3d2323f73 100644
--- a/src/view/screens/TermsOfService.tsx
+++ b/src/view/screens/TermsOfService.tsx
@@ -1,49 +1,110 @@
import React from 'react'
-import {View} from 'react-native'
-import {msg, Trans} 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 {TextLink} from '#/view/com/util/Link'
-import {Text} from '#/view/com/util/text/Text'
-import {ScrollView} from '#/view/com/util/Views'
+import { ScrollView } from 'react-native'
import * as Layout from '#/components/Layout'
-import {ViewHeader} from '../com/util/ViewHeader'
-
-type Props = NativeStackScreenProps<CommonNavigatorParams, 'TermsOfService'>
-export const TermsOfServiceScreen = (_props: Props) => {
- const pal = usePalette('default')
- const setMinimalShellMode = useSetMinimalShellMode()
- const {_} = useLingui()
-
- useFocusEffect(
- React.useCallback(() => {
- setMinimalShellMode(false)
- }, [setMinimalShellMode]),
- )
+import {useSetTitle} from '#/lib/hooks/useSetTitle'
+import {atoms as a, useTheme} from '#/alf'
+import {Text} from '#/components/Typography'
+
+export function TermsOfServiceScreen() {
+ useSetTitle('Terms of Service')
+ const t = useTheme()
return (
<Layout.Screen>
- <ViewHeader title={_(msg`Terms of Service`)} />
- <ScrollView style={[s.hContentRegion, pal.view]}>
- <View style={[s.p20]}>
- <Text style={pal.text}>
- <Trans>The Terms of Service have been moved to</Trans>{' '}
- <TextLink
- style={pal.link}
- href="https://bsky.social/about/support/tos"
- text="bsky.social/about/support/tos"
- />
- </Text>
- </View>
- <View style={s.footerSpacer} />
+ <ScrollView
+ style={[a.flex_1, {backgroundColor: t.palette.white}]}
+ contentContainerStyle={[a.p_lg, a.pt_5xl, a.pb_5xl]}>
+ <Text style={[a.text_2xl, a.font_bold, a.mb_lg]}>Terms of Service</Text>
+
+ <Text style={[a.mb_md]}>
+ These Terms of Service (hereinafter referred to as "these Terms") set forth the conditions for using this application (hereinafter referred to as "the App").
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>Article 1 (Application)</Text>
+ <Text style={[a.mb_md]}>
+ These Terms shall apply to all relationships between users and the provider of the App regarding the use of the App.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>Article 2 (User Registration)</Text>
+ <Text style={[a.mb_md]}>
+ Use of the App requires an AT Protocol-compatible account.
+ Registration information must be kept accurate and up-to-date.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>Article 3 (Prohibited Acts)</Text>
+ <Text style={[a.mb_md]}>
+ Users shall not engage in the following acts when using the App:
+ {'\n'}- Acts that violate laws or public order and morals
+ {'\n'}- Acts related to criminal activity
+ {'\n'}- Acts that infringe upon the rights of other users or third parties
+ {'\n'}- Acts that interfere with the operation of the App
+ {'\n'}- Unauthorized access or attempts thereof
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>Article 4 (Disclaimer)</Text>
+ <Text style={[a.mb_md]}>
+ The App is a decentralized service using the AT Protocol.
+ The provider makes no warranties, express or implied, regarding the App.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>Article 5 (Changes to Terms)</Text>
+ <Text style={[a.mb_md]}>
+ The provider may change these Terms without obtaining user consent when deemed necessary.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>Article 6 (Contact)</Text>
+ <Text style={[a.mb_md]}>
+ For questions regarding these Terms, please contact us through the support link in the settings screen.
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_5xl, a.mb_md]}>日本語訳(参考)</Text>
+
+ <Text style={[a.text_xl, a.font_bold, a.mb_lg]}>利用規約</Text>
+
+ <Text style={[a.mb_md]}>
+ 本利用規約(以下「本規約」)は、本アプリケーション(以下「本アプリ」)の利用条件を定めるものです。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>第1条適用</Text>
+ <Text style={[a.mb_md]}>
+ 本規約は、ユーザーと本アプリの提供者との間の本アプリの利用に関わる一切の関係に適用されます。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>第2条利用登録</Text>
+ <Text style={[a.mb_md]}>
+ 本アプリの利用にあたっては、ATプロトコル対応のアカウントが必要です。
+ 登録情報は正確かつ最新の状態に保つ必要があります。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>第3条禁止事項</Text>
+ <Text style={[a.mb_md]}>
+ ユーザーは、本アプリの利用にあたり、以下の行為をしてはなりません:
+ {'\n'}- 法令または公序良俗に違反する行為
+ {'\n'}- 犯罪行為に関連する行為
+ {'\n'}- 他のユーザーまたは第三者の権利を侵害する行為
+ {'\n'}- 本アプリの運営を妨害する行為
+ {'\n'}- 不正アクセスまたはこれを試みる行為
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>第4条免責事項</Text>
+ <Text style={[a.mb_md]}>
+ 本アプリは、ATプロトコルを使用した分散型サービスです。
+ 提供者は、本アプリに関して、明示的・黙示的を問わず、いかなる保証も行いません。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>第5条規約の変更</Text>
+ <Text style={[a.mb_md]}>
+ 提供者は、必要と判断した場合、ユーザーの承諾を得ることなく本規約を変更できるものとします。
+ </Text>
+
+ <Text style={[a.text_lg, a.font_bold, a.mt_lg, a.mb_md]}>第6条お問い合わせ</Text>
+ <Text style={[a.mb_md]}>
+ 本規約に関するご質問は、設定画面のサポートリンクからお問い合わせください。
+ </Text>
+
+ <Text style={[a.text_sm, a.mt_xl, {color: t.palette.contrast_500}]}>
+ Last Updated: December 7, 2025
+ </Text>
</ScrollView>
</Layout.Screen>
)