Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 35 additions & 29 deletions app/auth/login.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { PageHeader } from "@/components/PageHeader";
import { Screen } from "@/components/Screen";
import { useAuthStore } from "@/store/authStore";
import { useUserProfileStore } from "@/store/userProfileStore";
import { SOUNDLOG_TERMS_VERSION } from "@/constants/legal";

type AuthMode = "login" | "register";

Expand Down Expand Up @@ -42,6 +43,7 @@ export default function LoginScreen() {

const handleModePress = (nextMode: AuthMode) => {
setMode(nextMode);
setHasAcceptedRequiredTerms(false);
clearAuthError();
};

Expand All @@ -63,9 +65,11 @@ export default function LoginScreen() {
return;
}

if (mode === "register" && !hasAcceptedRequiredTerms) {
if (!hasAcceptedRequiredTerms) {
setAuthError(
"계정을 만들려면 이용약관과 개인정보 처리방침에 동의해주세요.",
mode === "register"
? "계정을 만들려면 이용약관과 개인정보 처리방침에 동의해주세요."
: "로그인하려면 최신 이용약관과 개인정보 처리방침에 동의해주세요.",
);
return;
}
Expand All @@ -79,11 +83,15 @@ export default function LoginScreen() {
? await loginMutation.mutateAsync({
email: normalizedEmail,
password,
termsAccepted: true,
termsVersion: SOUNDLOG_TERMS_VERSION,
})
: await registerMutation.mutateAsync({
displayName: trimmedDisplayName || undefined,
email: normalizedEmail,
password,
termsAccepted: true,
termsVersion: SOUNDLOG_TERMS_VERSION,
});

const didCompleteOnboarding =
Expand Down Expand Up @@ -227,34 +235,32 @@ export default function LoginScreen() {
) : null}
</View>

{mode === "register" ? (
<Pressable
accessibilityLabel="필수 이용약관과 개인정보 처리방침 동의"
accessibilityRole="checkbox"
accessibilityState={{ checked: hasAcceptedRequiredTerms }}
className="min-h-12 flex-row items-center gap-3 py-1"
disabled={isPending}
onPress={() => {
setHasAcceptedRequiredTerms((accepted) => !accepted);
clearAuthError();
}}
<Pressable
accessibilityLabel="필수 이용약관과 개인정보 처리방침 동의"
accessibilityRole="checkbox"
accessibilityState={{ checked: hasAcceptedRequiredTerms }}
className="min-h-12 flex-row items-center gap-3 py-1"
disabled={isPending}
onPress={() => {
setHasAcceptedRequiredTerms((accepted) => !accepted);
clearAuthError();
}}
>
<View
className={`h-6 w-6 items-center justify-center rounded-md border ${
hasAcceptedRequiredTerms
? "border-soundlog-lime bg-soundlog-lime"
: "border-white/25 bg-transparent"
}`}
>
<View
className={`h-6 w-6 items-center justify-center rounded-md border ${
hasAcceptedRequiredTerms
? "border-soundlog-lime bg-soundlog-lime"
: "border-white/25 bg-transparent"
}`}
>
{hasAcceptedRequiredTerms ? (
<Feather color="#4A1D96" name="check" size={15} />
) : null}
</View>
<AppText className="min-w-0 flex-1 text-xs leading-5 text-white/65">
이용약관과 개인정보 처리방침에 동의합니다. (필수)
</AppText>
</Pressable>
) : null}
{hasAcceptedRequiredTerms ? (
<Feather color="#4A1D96" name="check" size={15} />
) : null}
</View>
<AppText className="min-w-0 flex-1 text-xs leading-5 text-white/65">
최신 이용약관과 개인정보 처리방침에 동의합니다. (필수)
</AppText>
</Pressable>

{errorMessage ? (
<View className="flex-row items-start gap-3 py-2">
Expand Down
8 changes: 6 additions & 2 deletions app/legal/terms.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@ const termsSections = [
},
{
title: "제한 사항",
body: "타인의 권리를 침해하는 콘텐츠, 불법적인 목적의 이용, 서비스 안정성을 해치는 행위는 허용되지 않습니다. 필요한 경우 서비스 이용이 제한될 수 있습니다.",
body: "Soundlog는 불쾌하거나 폭력적이거나 혐오적이거나 성적인 콘텐츠를 용납하지 않습니다. 타인을 괴롭히거나 사칭하거나 위협하거나 스팸을 보내는 행위와 불법적인 목적의 이용도 허용하지 않습니다. 위반 콘텐츠는 즉시 숨김 또는 삭제될 수 있으며 위반 사용자는 서비스 이용이 정지될 수 있습니다.",
},
{
title: "신고와 차단",
body: `사용자는 앱에서 부적절한 콘텐츠를 신고하고 해당 사용자를 차단할 수 있습니다. 차단한 사용자의 콘텐츠는 즉시 피드와 지도에서 숨겨집니다. 신고는 ${SOUNDLOG_SUPPORT_EMAIL} 으로도 접수할 수 있으며 Soundlog는 신고 접수 후 24시간 안에 검토하고 필요한 콘텐츠 삭제와 사용자 제재를 진행합니다.`,
},
{
title: "문의와 변경",
Expand All @@ -34,7 +38,7 @@ export default function TermsScreen() {
sections={termsSections}
subtitle="Soundlog를 사용할 때 적용되는 기본 조건을 정리했습니다."
title="서비스 이용약관"
updatedAt="시행일 2026.06.24"
updatedAt="시행일 2026.08.15"
/>
);
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading