Compare commits
3 Commits
d735b1f214
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
16e11575f6
|
|||
|
a25ed0e92c
|
|||
|
d99ca3fd8b
|
@@ -11,7 +11,7 @@
|
|||||||
|[at]mosphere|system|pds, bsky(appview), ozone, bgs, plc|
|
|[at]mosphere|system|pds, bsky(appview), ozone, bgs, plc|
|
||||||
|[a]uthenticated [t]ransfer|protocol|[did](https://www.w3.org/TR/did-core/)|
|
|[a]uthenticated [t]ransfer|protocol|[did](https://www.w3.org/TR/did-core/)|
|
||||||
|
|
||||||
- https://atproto.com/ja/guides/glossary
|
- https://atproto.com/guides/glossary
|
||||||
|
|
||||||
## account
|
## account
|
||||||
|
|
||||||
@@ -41,8 +41,8 @@ $ curl -sL "syu.is/xrpc/com.atproto.repo.listRecords?repo=${handle}&collection=a
|
|||||||
|
|
||||||
> at://did:plc:6qyecktefllvenje24fcxnie/app.bsky.feed.generator/app
|
> at://did:plc:6qyecktefllvenje24fcxnie/app.bsky.feed.generator/app
|
||||||
|
|
||||||
- https://syu.is/profile/ai.syui.ai/feed/app
|
- https://syu.is/profile/did:plc:6qyecktefllvenje24fcxnie/feed/app
|
||||||
- https://feed.syu.is/xrpc/app.bsky.feed.getFeedSkeleton?feed=at://did:plc:4hqjfn7m6n5hno3doamuhgef/app.bsky.feed.generator/app
|
- https://feed.syu.is/xrpc/app.bsky.feed.getFeedSkeleton?feed=at://did:plc:6qyecktefllvenje24fcxnie/app.bsky.feed.generator/app
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
|||||||
56
install.zsh
56
install.zsh
@@ -276,6 +276,10 @@ function at-repos-patch-apply-all() {
|
|||||||
repo="atproto"
|
repo="atproto"
|
||||||
elif [[ $filename == *"feed"* ]]; then
|
elif [[ $filename == *"feed"* ]]; then
|
||||||
repo="feed-generator"
|
repo="feed-generator"
|
||||||
|
# feed-generatorパッチ適用前に既存のDockerfileを削除(upstreamと競合回避)
|
||||||
|
if [[ $filename == "200-feed-generator-custom.patch" ]]; then
|
||||||
|
rm -f "$d/repos/feed-generator/Dockerfile"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
patch-apply "$title" "$repo" "$filename"
|
patch-apply "$title" "$repo" "$filename"
|
||||||
@@ -331,6 +335,54 @@ export const SOCIAL_APP_DOMAIN =\
|
|||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function at-repos-feed-generator-newfiles() {
|
||||||
|
echo ""
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo "📝 Creating feed-generator new files..."
|
||||||
|
|
||||||
|
# Create app.ts
|
||||||
|
cat > $d/repos/feed-generator/src/algos/app.ts <<'EOF'
|
||||||
|
import { QueryParams } from '../lexicon/types/app/bsky/feed/getFeedSkeleton'
|
||||||
|
import { AppContext } from '../config'
|
||||||
|
|
||||||
|
// max 15 chars
|
||||||
|
export const shortname = 'app'
|
||||||
|
|
||||||
|
export const handler = async (ctx: AppContext, params: QueryParams) => {
|
||||||
|
let builder = ctx.db
|
||||||
|
.selectFrom('post')
|
||||||
|
.selectAll()
|
||||||
|
.orderBy('indexedAt', 'desc')
|
||||||
|
.orderBy('cid', 'desc')
|
||||||
|
.limit(params.limit)
|
||||||
|
|
||||||
|
if (params.cursor) {
|
||||||
|
const timeStr = new Date(parseInt(params.cursor, 10)).toISOString()
|
||||||
|
builder = builder.where('post.indexedAt', '<', timeStr)
|
||||||
|
}
|
||||||
|
const res = await builder.execute()
|
||||||
|
|
||||||
|
const feed = res.map((row) => ({
|
||||||
|
post: row.uri,
|
||||||
|
}))
|
||||||
|
|
||||||
|
let cursor: string | undefined
|
||||||
|
const last = res.at(-1)
|
||||||
|
if (last) {
|
||||||
|
cursor = new Date(last.indexedAt).getTime().toString(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
cursor,
|
||||||
|
feed,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "✅ Created src/algos/app.ts"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
}
|
||||||
|
|
||||||
function at-repos-build-docker-atproto() {
|
function at-repos-build-docker-atproto() {
|
||||||
cd $d
|
cd $d
|
||||||
docker image prune -a
|
docker image prune -a
|
||||||
@@ -533,6 +585,7 @@ case "$1" in
|
|||||||
at-repos-social-app-ios-patch
|
at-repos-social-app-ios-patch
|
||||||
at-repos-patch-apply-all
|
at-repos-patch-apply-all
|
||||||
at-repos-ozone-patch
|
at-repos-ozone-patch
|
||||||
|
at-repos-feed-generator-newfiles
|
||||||
show-failed-patches
|
show-failed-patches
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
@@ -561,7 +614,7 @@ esac
|
|||||||
case "`cat /etc/hostname`" in
|
case "`cat /etc/hostname`" in
|
||||||
at)
|
at)
|
||||||
if [ "$1" = "bgs-reset" ];then
|
if [ "$1" = "bgs-reset" ];then
|
||||||
at-repos-reset-bgs-db
|
# at-repos-reset-bgs-db
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
at-repos-pull-docker
|
at-repos-pull-docker
|
||||||
@@ -574,6 +627,7 @@ case "`cat /etc/hostname`" in
|
|||||||
at-repos-social-app-ios-patch
|
at-repos-social-app-ios-patch
|
||||||
at-repos-patch-apply-all
|
at-repos-patch-apply-all
|
||||||
at-repos-ozone-patch
|
at-repos-ozone-patch
|
||||||
|
at-repos-feed-generator-newfiles
|
||||||
show-failed-patches
|
show-failed-patches
|
||||||
at-repos-build-docker-atproto
|
at-repos-build-docker-atproto
|
||||||
at-repos-push-docker
|
at-repos-push-docker
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
今回の./ios (social-app)開発の要点をまとめます。
|
今回の./ios (social-app)開発の要点をまとめます。
|
||||||
|
|
||||||
1. MITのライセンスを遵守すること、iosアプリとして出品しても問題ないようにすること
|
1. MITのライセンスを遵守すること、iosアプリとして出品しても問題ないようにすること
|
||||||
https://raw.githubusercontent.com/bluesky-social/social-app/refs/heads/main/LICENSE
|
|
||||||
|
|
||||||
2. "Bluesky"という名称を使用しないこと。アイコンの変更。リンクの変更
|
2. "Bluesky"という名称を使用しないこと。アイコンの変更。リンクの変更
|
||||||
|
3. selfhostでも動くこと。
|
||||||
|
|
||||||
3. selfhostでも動くこと。これはすでにpatchで実現しています。
|
https://raw.githubusercontent.com/bluesky-social/social-app/refs/heads/main/LICENSE
|
||||||
|
|
||||||
|
|||||||
@@ -78,11 +78,11 @@ function cleanup_build {
|
|||||||
|
|
||||||
# 3. CocoaPods
|
# 3. CocoaPods
|
||||||
echo "3. Installing CocoaPods..."
|
echo "3. Installing CocoaPods..."
|
||||||
# Ensure PATH includes Homebrew ruby gems if needed
|
if [ -z "$1" ];then
|
||||||
export PATH="/opt/homebrew/lib/ruby/gems/3.4.0/bin:$PATH"
|
cd ios
|
||||||
cd ios
|
pod install
|
||||||
pod install
|
cd ..
|
||||||
cd ..
|
fi
|
||||||
|
|
||||||
# 4. Signing (Automated)
|
# 4. Signing (Automated)
|
||||||
echo "4. Configuring Xcode Signing..."
|
echo "4. Configuring Xcode Signing..."
|
||||||
@@ -132,6 +132,9 @@ EOF
|
|||||||
|
|
||||||
case $1 in
|
case $1 in
|
||||||
i)
|
i)
|
||||||
|
echo "Skipping cleanup_build..."
|
||||||
|
;;
|
||||||
|
*)
|
||||||
cleanup_build
|
cleanup_build
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -167,8 +170,15 @@ cp -R ${APP_NAME}.xcarchive/Products/Applications/${APP_NAME}.app Payload/
|
|||||||
# store.mobileprovisionの存在確認とコピー
|
# store.mobileprovisionの存在確認とコピー
|
||||||
# https://developer.apple.com/account/resources/profiles/list
|
# https://developer.apple.com/account/resources/profiles/list
|
||||||
if [ ! -f "$MOBILEPROVISION" ]; then
|
if [ ! -f "$MOBILEPROVISION" ]; then
|
||||||
echo "Error: store.mobileprovision not found at $MOBILEPROVISION"
|
# 親ディレクトリからコピーを試みる
|
||||||
exit 1
|
PARENT_MOBILEPROVISION="$SCRIPT_DIR/../embedded.mobileprovision"
|
||||||
|
if [ -f "$PARENT_MOBILEPROVISION" ]; then
|
||||||
|
echo "Copying mobileprovision from $PARENT_MOBILEPROVISION to $MOBILEPROVISION"
|
||||||
|
cp "$PARENT_MOBILEPROVISION" "$MOBILEPROVISION"
|
||||||
|
else
|
||||||
|
echo "Error: store.mobileprovision not found at $MOBILEPROVISION or $PARENT_MOBILEPROVISION"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp "$MOBILEPROVISION" Payload/${APP_NAME}.app/embedded.mobileprovision
|
cp "$MOBILEPROVISION" Payload/${APP_NAME}.app/embedded.mobileprovision
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ index 77f219e55..53f5e0cc0 100644
|
|||||||
- to="https://bsky.social/about/support/tos"
|
- to="https://bsky.social/about/support/tos"
|
||||||
+ label={_(msg`syu.is Terms of Service`)}
|
+ label={_(msg`syu.is Terms of Service`)}
|
||||||
+ to="https://syu.is/about/support/tos"
|
+ to="https://syu.is/about/support/tos"
|
||||||
style={[a.text_md, a.leading_normal]}>
|
style={[a.text_md, a.leading_snug]}>
|
||||||
- Bluesky Social Terms of Service
|
- Bluesky Social Terms of Service
|
||||||
+ syu.is Terms of Service
|
+ syu.is Terms of Service
|
||||||
</SimpleInlineLinkText>
|
</SimpleInlineLinkText>
|
||||||
|
|||||||
@@ -1,17 +1,22 @@
|
|||||||
diff --git a/src/ageAssurance/index.tsx b/src/ageAssurance/index.tsx
|
diff --git a/src/ageAssurance/index.tsx b/src/ageAssurance/index.tsx
|
||||||
index 9a0a9c9d5..5a6563e52 100644
|
|
||||||
--- a/src/ageAssurance/index.tsx
|
--- a/src/ageAssurance/index.tsx
|
||||||
+++ b/src/ageAssurance/index.tsx
|
+++ b/src/ageAssurance/index.tsx
|
||||||
@@ -88,19 +88,16 @@ function InnerProvider({children}: {children: React.ReactNode}) {
|
@@ -90,25 +90,16 @@ function InnerProvider({children}: {children: React.ReactNode}) {
|
||||||
return (
|
return (
|
||||||
<AgeAssuranceStateContext.Provider
|
<AgeAssuranceStateContext.Provider
|
||||||
value={useMemo(() => {
|
value={useMemo(() => {
|
||||||
- const chatDisabled = state.access !== AgeAssuranceAccess.Full
|
- const chatDisabled = state.access !== AgeAssuranceAccess.Full
|
||||||
- const isUnderage = data?.birthdate
|
- const isUnderAdultAge = data?.birthdate
|
||||||
- ? isUserUnderAdultAge(data.birthdate)
|
- ? isUnderAge(data.birthdate, 18)
|
||||||
- : true
|
- : true
|
||||||
|
- const isOverRegionMinAccessAge = data?.birthdate
|
||||||
|
- ? !isUnderAge(data.birthdate, config.minAccessAge)
|
||||||
|
- : false
|
||||||
|
- const isOverAppMinAccessAge = data?.birthdate
|
||||||
|
- ? !isUnderAge(data.birthdate, MIN_ACCESS_AGE)
|
||||||
|
- : false
|
||||||
- const adultContentDisabled =
|
- const adultContentDisabled =
|
||||||
- state.access !== AgeAssuranceAccess.Full || isUnderage
|
- state.access !== AgeAssuranceAccess.Full || isUnderAdultAge
|
||||||
return {
|
return {
|
||||||
Access: AgeAssuranceAccess,
|
Access: AgeAssuranceAccess,
|
||||||
Status: AgeAssuranceStatus,
|
Status: AgeAssuranceStatus,
|
||||||
@@ -23,8 +28,12 @@ index 9a0a9c9d5..5a6563e52 100644
|
|||||||
flags: {
|
flags: {
|
||||||
- adultContentDisabled,
|
- adultContentDisabled,
|
||||||
- chatDisabled,
|
- chatDisabled,
|
||||||
|
- isOverRegionMinAccessAge,
|
||||||
|
- isOverAppMinAccessAge,
|
||||||
+ adultContentDisabled: false,
|
+ adultContentDisabled: false,
|
||||||
+ chatDisabled: false,
|
+ chatDisabled: false,
|
||||||
|
+ isOverRegionMinAccessAge: true,
|
||||||
|
+ isOverAppMinAccessAge: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}, [state, data])}>
|
}, [state, data, config])}>
|
||||||
|
|||||||
@@ -1,21 +1,35 @@
|
|||||||
diff --git a/src/screens/Signup/StepInfo/index.tsx b/src/screens/Signup/StepInfo/index.tsx
|
|
||||||
--- a/src/screens/Signup/StepInfo/index.tsx
|
--- a/src/screens/Signup/StepInfo/index.tsx
|
||||||
+++ b/src/screens/Signup/StepInfo/index.tsx
|
+++ b/src/screens/Signup/StepInfo/index.tsx
|
||||||
@@ -7,11 +7,9 @@
|
@@ -9,44 +9,17 @@
|
||||||
|
|
||||||
import {isEmailMaybeInvalid} from '#/lib/strings/email'
|
|
||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
-import {is13, is18, useSignupContext} from '#/screens/Signup/state'
|
import {isNative} from '#/platform/detection'
|
||||||
+import {useSignupContext} from '#/screens/Signup/state'
|
import {useSignupContext} from '#/screens/Signup/state'
|
||||||
import {Policies} from '#/screens/Signup/StepInfo/Policies'
|
-import {Policies} from '#/screens/Signup/StepInfo/Policies'
|
||||||
import {atoms as a, native} from '#/alf'
|
import {atoms as a, native} from '#/alf'
|
||||||
|
-import * as Admonition from '#/components/Admonition'
|
||||||
|
-import * as Dialog from '#/components/Dialog'
|
||||||
|
-import {DeviceLocationRequestDialog} from '#/components/dialogs/DeviceLocationRequestDialog'
|
||||||
-import * as DateField from '#/components/forms/DateField'
|
-import * as DateField from '#/components/forms/DateField'
|
||||||
-import {type DateFieldRef} from '#/components/forms/DateField/types'
|
-import {type DateFieldRef} from '#/components/forms/DateField/types'
|
||||||
import {FormError} from '#/components/forms/FormError'
|
import {FormError} from '#/components/forms/FormError'
|
||||||
import {HostingProvider} from '#/components/forms/HostingProvider'
|
import {HostingProvider} from '#/components/forms/HostingProvider'
|
||||||
import * as TextField from '#/components/forms/TextField'
|
import * as TextField from '#/components/forms/TextField'
|
||||||
@@ -22,16 +20,6 @@
|
import {Envelope_Stroke2_Corner0_Rounded as Envelope} from '#/components/icons/Envelope'
|
||||||
|
import {Lock_Stroke2_Corner0_Rounded as Lock} from '#/components/icons/Lock'
|
||||||
|
import {Ticket_Stroke2_Corner0_Rounded as Ticket} from '#/components/icons/Ticket'
|
||||||
|
-import {createStaticClick, SimpleInlineLinkText} from '#/components/Link'
|
||||||
|
import {Loader} from '#/components/Loader'
|
||||||
import {usePreemptivelyCompleteActivePolicyUpdate} from '#/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate'
|
import {usePreemptivelyCompleteActivePolicyUpdate} from '#/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate'
|
||||||
|
-import * as Toast from '#/components/Toast'
|
||||||
|
-import {
|
||||||
|
- isUnderAge,
|
||||||
|
- MIN_ACCESS_AGE,
|
||||||
|
- useAgeAssuranceRegionConfigWithFallback,
|
||||||
|
-} from '#/ageAssurance/util'
|
||||||
|
-import {
|
||||||
|
- useDeviceGeolocationApi,
|
||||||
|
- useIsDeviceGeolocationGranted,
|
||||||
|
-} from '#/geolocation'
|
||||||
import {BackNextButtons} from '../BackNextButtons'
|
import {BackNextButtons} from '../BackNextButtons'
|
||||||
|
|
||||||
-function sanitizeDate(date: Date): Date {
|
-function sanitizeDate(date: Date): Date {
|
||||||
@@ -31,26 +45,40 @@ diff --git a/src/screens/Signup/StepInfo/index.tsx b/src/screens/Signup/StepInfo
|
|||||||
export function StepInfo({
|
export function StepInfo({
|
||||||
onPressBack,
|
onPressBack,
|
||||||
isServerError,
|
isServerError,
|
||||||
@@ -55,7 +43,6 @@
|
@@ -70,21 +43,6 @@
|
||||||
|
|
||||||
const emailInputRef = useRef<TextInput>(null)
|
const emailInputRef = useRef<TextInput>(null)
|
||||||
const passwordInputRef = useRef<TextInput>(null)
|
const passwordInputRef = useRef<TextInput>(null)
|
||||||
- const birthdateInputRef = useRef<DateFieldRef>(null)
|
- const birthdateInputRef = useRef<DateFieldRef>(null)
|
||||||
|
-
|
||||||
|
- const aaRegionConfig = useAgeAssuranceRegionConfigWithFallback()
|
||||||
|
- const {setDeviceGeolocation} = useDeviceGeolocationApi()
|
||||||
|
- const locationControl = Dialog.useDialogControl()
|
||||||
|
- const isOverRegionMinAccessAge = state.dateOfBirth
|
||||||
|
- ? !isUnderAge(state.dateOfBirth.toISOString(), aaRegionConfig.minAccessAge)
|
||||||
|
- : true
|
||||||
|
- const isOverAppMinAccessAge = state.dateOfBirth
|
||||||
|
- ? !isUnderAge(state.dateOfBirth.toISOString(), MIN_ACCESS_AGE)
|
||||||
|
- : true
|
||||||
|
- const isOverMinAdultAge = state.dateOfBirth
|
||||||
|
- ? !isUnderAge(state.dateOfBirth.toISOString(), 18)
|
||||||
|
- : true
|
||||||
|
- const isDeviceGeolocationGranted = useIsDeviceGeolocationGranted()
|
||||||
|
|
||||||
const [hasWarnedEmail, setHasWarnedEmail] = React.useState<boolean>(false)
|
const [hasWarnedEmail, setHasWarnedEmail] = React.useState<boolean>(false)
|
||||||
|
|
||||||
@@ -76,10 +63,6 @@
|
@@ -105,10 +63,6 @@
|
||||||
const emailChanged = prevEmailValueRef.current !== email
|
const emailChanged = prevEmailValueRef.current !== email
|
||||||
const password = passwordValueRef.current
|
const password = passwordValueRef.current
|
||||||
|
|
||||||
- if (!is13(state.dateOfBirth)) {
|
- if (!isOverRegionMinAccessAge) {
|
||||||
- return
|
- return
|
||||||
- }
|
- }
|
||||||
-
|
-
|
||||||
if (state.serviceDescription?.inviteCodeRequired && !inviteCode) {
|
if (state.serviceDescription?.inviteCodeRequired && !inviteCode) {
|
||||||
return dispatch({
|
return dispatch({
|
||||||
type: 'setError',
|
type: 'setError',
|
||||||
@@ -246,44 +229,21 @@
|
@@ -275,107 +229,16 @@
|
||||||
secureTextEntry
|
secureTextEntry
|
||||||
autoComplete="new-password"
|
autoComplete="new-password"
|
||||||
autoCapitalize="none"
|
autoCapitalize="none"
|
||||||
@@ -83,18 +111,79 @@ diff --git a/src/screens/Signup/StepInfo/index.tsx b/src/screens/Signup/StepInfo
|
|||||||
- maximumDate={new Date()}
|
- maximumDate={new Date()}
|
||||||
- />
|
- />
|
||||||
- </View>
|
- </View>
|
||||||
<Policies
|
-
|
||||||
serviceDescription={state.serviceDescription}
|
- <View style={[a.gap_sm]}>
|
||||||
- needsGuardian={!is18(state.dateOfBirth)}
|
- <Policies serviceDescription={state.serviceDescription} />
|
||||||
- under13={!is13(state.dateOfBirth)}
|
-
|
||||||
+ needsGuardian={false}
|
- {!isOverRegionMinAccessAge || !isOverAppMinAccessAge ? (
|
||||||
+ under13={false}
|
- <Admonition.Outer type="error">
|
||||||
/>
|
- <Admonition.Row>
|
||||||
|
- <Admonition.Icon />
|
||||||
|
- <Admonition.Content>
|
||||||
|
- <Admonition.Text>
|
||||||
|
- {!isOverAppMinAccessAge ? (
|
||||||
|
- <Trans>
|
||||||
|
- You must be {MIN_ACCESS_AGE} years of age or older
|
||||||
|
- to create an account.
|
||||||
|
- </Trans>
|
||||||
|
- ) : (
|
||||||
|
- <Trans>
|
||||||
|
- You must be {aaRegionConfig.minAccessAge} years of
|
||||||
|
- age or older to create an account in your region.
|
||||||
|
- </Trans>
|
||||||
|
- )}
|
||||||
|
- </Admonition.Text>
|
||||||
|
- {isNative &&
|
||||||
|
- !isDeviceGeolocationGranted &&
|
||||||
|
- isOverAppMinAccessAge && (
|
||||||
|
- <Admonition.Text>
|
||||||
|
- <Trans>
|
||||||
|
- Have we got your location wrong?{' '}
|
||||||
|
- <SimpleInlineLinkText
|
||||||
|
- label={_(
|
||||||
|
- msg`Tap here to confirm your location with GPS.`,
|
||||||
|
- )}
|
||||||
|
- {...createStaticClick(() => {
|
||||||
|
- locationControl.open()
|
||||||
|
- })}>
|
||||||
|
- Tap here to confirm your location with GPS.
|
||||||
|
- </SimpleInlineLinkText>
|
||||||
|
- </Trans>
|
||||||
|
- </Admonition.Text>
|
||||||
|
- )}
|
||||||
|
- </Admonition.Content>
|
||||||
|
- </Admonition.Row>
|
||||||
|
- </Admonition.Outer>
|
||||||
|
- ) : !isOverMinAdultAge ? (
|
||||||
|
- <Admonition.Admonition type="warning">
|
||||||
|
- <Trans>
|
||||||
|
- If you are not yet an adult according to the laws of your
|
||||||
|
- country, your parent or legal guardian must read these Terms
|
||||||
|
- on your behalf.
|
||||||
|
- </Trans>
|
||||||
|
- </Admonition.Admonition>
|
||||||
|
- ) : undefined}
|
||||||
|
- </View>
|
||||||
|
-
|
||||||
|
- {isNative && (
|
||||||
|
- <DeviceLocationRequestDialog
|
||||||
|
- control={locationControl}
|
||||||
|
- onLocationAcquired={props => {
|
||||||
|
- props.closeDialog(() => {
|
||||||
|
- // set this after close!
|
||||||
|
- setDeviceGeolocation(props.geolocation)
|
||||||
|
- Toast.show(_(msg`Your location has been updated.`), {
|
||||||
|
- type: 'success',
|
||||||
|
- })
|
||||||
|
- })
|
||||||
|
- }}
|
||||||
|
- />
|
||||||
|
- )}
|
||||||
</>
|
</>
|
||||||
) : undefined}
|
) : undefined}
|
||||||
</View>
|
</View>
|
||||||
<BackNextButtons
|
<BackNextButtons
|
||||||
- hideNext={!is13(state.dateOfBirth)}
|
- hideNext={!isOverRegionMinAccessAge}
|
||||||
+ hideNext={false}
|
+ hideNext={false}
|
||||||
showRetry={isServerError}
|
showRetry={isServerError}
|
||||||
isLoading={state.isLoading}
|
isLoading={state.isLoading}
|
||||||
|
|||||||
@@ -70,8 +70,6 @@ npx expo prebuild --platform ios --clean
|
|||||||
|
|
||||||
# 3. CocoaPods
|
# 3. CocoaPods
|
||||||
echo "3. Installing CocoaPods..."
|
echo "3. Installing CocoaPods..."
|
||||||
# Ensure PATH includes Homebrew ruby gems if needed
|
|
||||||
export PATH="/opt/homebrew/lib/ruby/gems/3.4.0/bin:$PATH"
|
|
||||||
cd ios
|
cd ios
|
||||||
pod install
|
pod install
|
||||||
cd ..
|
cd ..
|
||||||
|
|||||||
Reference in New Issue
Block a user