From 987a0b419f2237feebd5650699184335e9a456f9 Mon Sep 17 00:00:00 2001 From: JaeminHwang49 Date: Tue, 24 Feb 2026 23:49:07 +0900 Subject: [PATCH 01/21] =?UTF-8?q?Feature(#135):=20Firebase=20Remote=20Conf?= =?UTF-8?q?ig=20=EB=A9=94=EC=9D=B4=20=EB=A6=AC=EB=B7=B0=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/umc/edison/data/token/TokenManager.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/umc/edison/data/token/TokenManager.kt b/app/src/main/java/com/umc/edison/data/token/TokenManager.kt index 7b1e5292..2f5f0a18 100644 --- a/app/src/main/java/com/umc/edison/data/token/TokenManager.kt +++ b/app/src/main/java/com/umc/edison/data/token/TokenManager.kt @@ -26,13 +26,9 @@ class TokenManager @Inject constructor( } } - override fun getAccessToken(): String? { - return cachedAccessToken - } + override fun getAccessToken(): String? = cachedAccessToken - override fun getRefreshToken(): String? { - return cachedRefreshToken - } + override fun getRefreshToken(): String? = cachedRefreshToken override suspend fun clearCachedTokens() { mutex.withLock { From 6c880a1f14b1ecd24e0be1d3844ca964a025c303 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 25 Jan 2026 17:09:25 +0900 Subject: [PATCH 02/21] :sparkles: Feature: Add Bitrise CI configuration for Android builds --- bitrise.yml | 329 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 329 insertions(+) create mode 100644 bitrise.yml diff --git a/bitrise.yml b/bitrise.yml new file mode 100644 index 00000000..67782fe2 --- /dev/null +++ b/bitrise.yml @@ -0,0 +1,329 @@ +format_version: '11' +default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git + +workflows: + primary: + steps: + - activate-ssh-key@4: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + + - git-clone@7: + inputs: + - clone_depth: 1 + + - install-missing-android-tools@3: + inputs: + - gradlew_path: "$PROJECT_LOCATION/gradlew" + + - cache-pull@2: {} + + - script@1: + title: Set environment variables + inputs: + - content: | + #!/bin/bash + set -e + + if [ -z "$ENVIRONMENT" ] || [ "$ENVIRONMENT" = "auto" ]; then + if [ "$BITRISE_GIT_BRANCH" = "main" ] || [ "$BITRISE_GIT_BRANCH" = "master" ]; then + ENVIRONMENT="production" + else + ENVIRONMENT="development" + fi + fi + + if [ -z "$BUILD_TYPE" ]; then + if [ "$ENVIRONMENT" = "production" ]; then + BUILD_TYPE="release" + else + BUILD_TYPE="qa" + fi + fi + + if [ "$ENVIRONMENT" = "production" ]; then + export BASE_URL="$PRODUCTION_BASE_URL" + export BRANCH_KEY="$PRODUCTION_BRANCH_KEY" + else + export BASE_URL="$DEVELOPMENT_BASE_URL" + export BRANCH_KEY="$DEVELOPMENT_BRANCH_KEY" + fi + + echo "export BUILD_TYPE=$BUILD_TYPE" >> $BITRISE_ENV + + echo "Environment: $ENVIRONMENT" + echo "Build Type: $BUILD_TYPE" + if [ -n "$BASE_URL" ]; then + MASKED_URL=$(echo "$BASE_URL" | sed 's/\(https\?:\/\/[^\/]*\).*/\1\/***/') + echo "BASE_URL: $MASKED_URL (masked)" + else + echo "BASE_URL: (not set)" + fi + + echo "sdk.dir=$ANDROID_HOME" > local.properties + echo "base_url=$BASE_URL" >> local.properties + echo "branch_key=$BRANCH_KEY" >> local.properties + + - script@1: + title: Build APK with correct build type + inputs: + - content: | + #!/bin/bash + set -e + + case "$BUILD_TYPE" in + debug) + GRADLE_TASK="assembleDebug" + ;; + qa) + GRADLE_TASK="assembleQa" + ;; + release) + GRADLE_TASK="assembleRelease" + ;; + *) + echo "Unknown BUILD_TYPE: $BUILD_TYPE, defaulting to debug" + GRADLE_TASK="assembleDebug" + ;; + esac + + echo "Gradle Task: $GRADLE_TASK" + echo "export GRADLE_TASK=$GRADLE_TASK" >> $BITRISE_ENV + + - gradle-runner@1: + inputs: + - gradle_file: "$PROJECT_LOCATION/build.gradle.kts" + - gradle_task: $GRADLE_TASK + - gradle_options: "--stacktrace" + + - cache-push@2: {} + + - deploy-to-bitrise-io@2: + inputs: + - deploy_path: "$BITRISE_APK_PATH" + - notify_user_groups: none + - is_enable_public_page: "true" + + - script@1: + title: Send Discord notification + run_if: '{{getenv "DISCORD_WEBHOOK_URL" | ne ""}}' + inputs: + - content: | + #!/bin/bash + set -e + + if [ "$BITRISE_BUILD_STATUS" = "0" ]; then + EMOJI="βœ…" + STATUS="Build Success" + COLOR=3066993 + else + EMOJI="❌" + STATUS="Build Failed" + COLOR=15158332 + fi + + jq -n \ + --arg username "Android Build Bot" \ + --arg avatar_url "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" \ + --arg content "${EMOJI} **${STATUS}**" \ + --arg branch "$BITRISE_GIT_BRANCH" \ + --arg build_type "$BUILD_TYPE" \ + --arg version "$BITRISE_APP_VERSION" \ + --arg download_url "$BITRISE_APP_URL" \ + --argjson color "$COLOR" \ + '{ + username: $username, + avatar_url: $avatar_url, + content: $content, + embeds: [{ + title: "πŸ“± Edison Android Build Success", + color: $color, + fields: [ + { + name: "🌿 Branch", + value: $branch, + inline: true + }, + { + name: "πŸ”¨ Build Type", + value: $build_type, + inline: true + }, + { + name: "πŸ“¦ Version", + value: $version, + inline: true + }, + { + name: "πŸ“₯ Download", + value: $download_url, + inline: false + } + ], + url: $download_url, + footer: { + text: "Bitrise" + }, + timestamp: (now | todateiso8601) + }] + }' > payload.json + + curl -H "Content-Type: application/json" \ + -X POST \ + -d @payload.json \ + "$DISCORD_WEBHOOK_URL" || echo "Discord notification failed" + + release: + steps: + - activate-ssh-key@4: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + + - git-clone@7: + inputs: + - clone_depth: 1 + + - install-missing-android-tools@3: + inputs: + - gradlew_path: "$PROJECT_LOCATION/gradlew" + + - cache-pull@2: {} + + - script@1: + title: Set production environment variables + inputs: + - content: | + #!/bin/bash + set -e + + BUILD_TYPE="${BUILD_TYPE:-release}" + ENVIRONMENT="production" + + export BASE_URL="$PRODUCTION_BASE_URL" + export BRANCH_KEY="$PRODUCTION_BRANCH_KEY" + export ENVIRONMENT + + echo "export BUILD_TYPE=$BUILD_TYPE" >> $BITRISE_ENV + + echo "Environment: Production" + echo "Build Type: $BUILD_TYPE" + if [ -n "$BASE_URL" ]; then + MASKED_URL=$(echo "$BASE_URL" | sed 's/\(https\?:\/\/[^\/]*\).*/\1\/***/') + echo "BASE_URL: $MASKED_URL (masked)" + else + echo "BASE_URL: (not set)" + fi + + echo "sdk.dir=$ANDROID_HOME" > local.properties + echo "base_url=$BASE_URL" >> local.properties + echo "branch_key=$BRANCH_KEY" >> local.properties + + - script@1: + title: Build APK with correct build type + inputs: + - content: | + #!/bin/bash + set -e + + case "$BUILD_TYPE" in + debug) + GRADLE_TASK="assembleDebug" + ;; + qa) + GRADLE_TASK="assembleQa" + ;; + release) + GRADLE_TASK="assembleRelease" + ;; + *) + echo "Unknown BUILD_TYPE: $BUILD_TYPE, defaulting to release" + GRADLE_TASK="assembleRelease" + ;; + esac + + echo "Gradle Task: $GRADLE_TASK" + echo "export GRADLE_TASK=$GRADLE_TASK" >> $BITRISE_ENV + + - gradle-runner@1: + inputs: + - gradle_file: "$PROJECT_LOCATION/build.gradle.kts" + - gradle_task: $GRADLE_TASK + - gradle_options: "--stacktrace" + + - cache-push@2: {} + + - deploy-to-bitrise-io@2: + inputs: + - deploy_path: "$BITRISE_APK_PATH" + - notify_user_groups: none + - is_enable_public_page: "true" + + - script@1: + title: Send Discord notification + run_if: '{{getenv "DISCORD_WEBHOOK_URL" | ne ""}}' + inputs: + - content: | + #!/bin/bash + set -e + + if [ "$BITRISE_BUILD_STATUS" = "0" ]; then + EMOJI="βœ…" + STATUS="Build Success" + COLOR=3066993 + else + EMOJI="❌" + STATUS="Build Failed" + COLOR=15158332 + fi + + jq -n \ + --arg username "Android Build Bot" \ + --arg content "${EMOJI} **${STATUS}**" \ + --arg branch "$BITRISE_GIT_BRANCH" \ + --arg build_type "release" \ + --arg version "$BITRISE_APP_VERSION" \ + --arg download_url "$BITRISE_APP_URL" \ + --argjson color "$COLOR" \ + '{ + username: $username, + content: $content, + embeds: [{ + title: "πŸ“± Edison Android Release Build Success", + color: $color, + fields: [ + { + name: "🌿 Branch", + value: $branch, + inline: true + }, + { + name: "πŸ”¨ Build Type", + value: $build_type, + inline: true + }, + { + name: "πŸ“¦ Version", + value: $version, + inline: true + }, + { + name: "πŸ“₯ Download", + value: $download_url, + inline: false + } + ], + url: $download_url, + footer: { + text: "Bitrise" + }, + timestamp: (now | todateiso8601) + }] + }' > payload.json + + curl -H "Content-Type: application/json" \ + -X POST \ + -d @payload.json \ + "$DISCORD_WEBHOOK_URL" || echo "Discord notification failed" + +app: + envs: + - PROJECT_LOCATION: "." + - MODULE: "app" From e95186edd4e7b298e692128a44acbabf2e7f796a Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 25 Jan 2026 17:32:54 +0900 Subject: [PATCH 03/21] :sparkles: Feature: Upgrade Bitrise step versions for git-clone and gradle-runner --- bitrise.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 67782fe2..46b6e04b 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -7,7 +7,7 @@ workflows: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@7: + - git-clone@8.4.0: inputs: - clone_depth: 1 @@ -89,7 +89,7 @@ workflows: echo "Gradle Task: $GRADLE_TASK" echo "export GRADLE_TASK=$GRADLE_TASK" >> $BITRISE_ENV - - gradle-runner@1: + - gradle-runner@4.0.2: inputs: - gradle_file: "$PROJECT_LOCATION/build.gradle.kts" - gradle_task: $GRADLE_TASK @@ -177,7 +177,7 @@ workflows: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@7: + - git-clone@8.4.0: inputs: - clone_depth: 1 @@ -242,7 +242,7 @@ workflows: echo "Gradle Task: $GRADLE_TASK" echo "export GRADLE_TASK=$GRADLE_TASK" >> $BITRISE_ENV - - gradle-runner@1: + - gradle-runner@4.0.2: inputs: - gradle_file: "$PROJECT_LOCATION/build.gradle.kts" - gradle_task: $GRADLE_TASK From bb336af10e9aa57a01df005cfd2094d3280de174 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 25 Jan 2026 17:36:41 +0900 Subject: [PATCH 04/21] :sparkles: Feature: Update Bitrise workflows to rename primary and release to build-qa and build-release --- bitrise.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 46b6e04b..e8a1a963 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2,7 +2,7 @@ format_version: '11' default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git workflows: - primary: + build-qa: steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' @@ -172,7 +172,7 @@ workflows: -d @payload.json \ "$DISCORD_WEBHOOK_URL" || echo "Discord notification failed" - release: + build-release: steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' From 3b586665613153932c7ca5853065fa6e9179d7cc Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 25 Jan 2026 17:39:17 +0900 Subject: [PATCH 05/21] :sparkles: Feature: Replace echo commands with envman for setting environment variables in Bitrise workflows --- bitrise.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index e8a1a963..f8b86396 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -48,7 +48,7 @@ workflows: export BRANCH_KEY="$DEVELOPMENT_BRANCH_KEY" fi - echo "export BUILD_TYPE=$BUILD_TYPE" >> $BITRISE_ENV + envman add --key BUILD_TYPE --value "$BUILD_TYPE" echo "Environment: $ENVIRONMENT" echo "Build Type: $BUILD_TYPE" @@ -87,7 +87,7 @@ workflows: esac echo "Gradle Task: $GRADLE_TASK" - echo "export GRADLE_TASK=$GRADLE_TASK" >> $BITRISE_ENV + envman add --key GRADLE_TASK --value "$GRADLE_TASK" - gradle-runner@4.0.2: inputs: @@ -201,7 +201,7 @@ workflows: export BRANCH_KEY="$PRODUCTION_BRANCH_KEY" export ENVIRONMENT - echo "export BUILD_TYPE=$BUILD_TYPE" >> $BITRISE_ENV + envman add --key BUILD_TYPE --value "$BUILD_TYPE" echo "Environment: Production" echo "Build Type: $BUILD_TYPE" @@ -240,7 +240,7 @@ workflows: esac echo "Gradle Task: $GRADLE_TASK" - echo "export GRADLE_TASK=$GRADLE_TASK" >> $BITRISE_ENV + envman add --key GRADLE_TASK --value "$GRADLE_TASK" - gradle-runner@4.0.2: inputs: From 9b920124890e6712379bd7ddbac22fd1ee5951c0 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 25 Jan 2026 17:47:54 +0900 Subject: [PATCH 06/21] :sparkles: Feature: Update cache steps --- bitrise.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index f8b86396..e0e7ec71 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -15,7 +15,7 @@ workflows: inputs: - gradlew_path: "$PROJECT_LOCATION/gradlew" - - cache-pull@2: {} + - restore-gradle-cache@1: {} - script@1: title: Set environment variables @@ -95,7 +95,7 @@ workflows: - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - cache-push@2: {} + - save-gradle-cache@1: {} - deploy-to-bitrise-io@2: inputs: @@ -185,7 +185,7 @@ workflows: inputs: - gradlew_path: "$PROJECT_LOCATION/gradlew" - - cache-pull@2: {} + - restore-gradle-cache@1: {} - script@1: title: Set production environment variables @@ -248,7 +248,7 @@ workflows: - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - cache-push@2: {} + - save-gradle-cache@1: {} - deploy-to-bitrise-io@2: inputs: From d14a90b8f71c8cd87bc293c7bf1a6929de46017e Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 25 Jan 2026 17:50:06 +0900 Subject: [PATCH 07/21] :sparkles: Feature: Add script to setup google-services.json files for different build types in Bitrise workflows --- bitrise.yml | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index e0e7ec71..2679582b 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -17,6 +17,47 @@ workflows: - restore-gradle-cache@1: {} + - script@1: + title: Setup google-services.json files + inputs: + - content: | + #!/bin/bash + set -e + + if [ -z "$BUILD_TYPE" ]; then + if [ "$BITRISE_GIT_BRANCH" = "main" ] || [ "$BITRISE_GIT_BRANCH" = "master" ]; then + BUILD_TYPE="release" + else + BUILD_TYPE="qa" + fi + fi + + if [ -n "$GOOGLE_SERVICES_JSON_DEBUG" ]; then + mkdir -p app/src/debug + echo "$GOOGLE_SERVICES_JSON_DEBUG" | base64 -d > app/src/debug/google-services.json + echo "βœ“ Created app/src/debug/google-services.json" + else + echo "⚠ Warning: GOOGLE_SERVICES_JSON_DEBUG not set" + fi + + if [ -n "$GOOGLE_SERVICES_JSON_QA" ]; then + mkdir -p app/src/qa + echo "$GOOGLE_SERVICES_JSON_QA" | base64 -d > app/src/qa/google-services.json + echo "βœ“ Created app/src/qa/google-services.json" + else + echo "⚠ Warning: GOOGLE_SERVICES_JSON_QA not set" + fi + + if [ -n "$GOOGLE_SERVICES_JSON_RELEASE" ]; then + mkdir -p app/src/release + echo "$GOOGLE_SERVICES_JSON_RELEASE" | base64 -d > app/src/release/google-services.json + echo "βœ“ Created app/src/release/google-services.json" + else + echo "⚠ Warning: GOOGLE_SERVICES_JSON_RELEASE not set" + fi + + echo "Google Services JSON files setup completed for build type: $BUILD_TYPE" + - script@1: title: Set environment variables inputs: @@ -187,6 +228,39 @@ workflows: - restore-gradle-cache@1: {} + - script@1: + title: Setup google-services.json files + inputs: + - content: | + #!/bin/bash + set -e + + if [ -n "$GOOGLE_SERVICES_JSON_DEBUG" ]; then + mkdir -p app/src/debug + echo "$GOOGLE_SERVICES_JSON_DEBUG" | base64 -d > app/src/debug/google-services.json + echo "βœ“ Created app/src/debug/google-services.json" + else + echo "⚠ Warning: GOOGLE_SERVICES_JSON_DEBUG not set" + fi + + if [ -n "$GOOGLE_SERVICES_JSON_QA" ]; then + mkdir -p app/src/qa + echo "$GOOGLE_SERVICES_JSON_QA" | base64 -d > app/src/qa/google-services.json + echo "βœ“ Created app/src/qa/google-services.json" + else + echo "⚠ Warning: GOOGLE_SERVICES_JSON_QA not set" + fi + + if [ -n "$GOOGLE_SERVICES_JSON_RELEASE" ]; then + mkdir -p app/src/release + echo "$GOOGLE_SERVICES_JSON_RELEASE" | base64 -d > app/src/release/google-services.json + echo "βœ“ Created app/src/release/google-services.json" + else + echo "⚠ Warning: GOOGLE_SERVICES_JSON_RELEASE not set" + fi + + echo "Google Services JSON files setup completed" + - script@1: title: Set production environment variables inputs: From e231f75cfc89e246d9d987fc07268b72a7fa794c Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 25 Jan 2026 17:53:24 +0900 Subject: [PATCH 08/21] :sparkles: Feature: Upgrade restore and save gradle cache steps to version 2.2.4 in Bitrise workflows --- bitrise.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 2679582b..f66be3ea 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -15,7 +15,7 @@ workflows: inputs: - gradlew_path: "$PROJECT_LOCATION/gradlew" - - restore-gradle-cache@1: {} + - restore-gradle-cache@2.2.4: {} - script@1: title: Setup google-services.json files @@ -136,7 +136,7 @@ workflows: - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - save-gradle-cache@1: {} + - save-gradle-cache@2.2.4: {} - deploy-to-bitrise-io@2: inputs: @@ -226,7 +226,7 @@ workflows: inputs: - gradlew_path: "$PROJECT_LOCATION/gradlew" - - restore-gradle-cache@1: {} + - restore-gradle-cache@2.2.4: {} - script@1: title: Setup google-services.json files @@ -322,7 +322,7 @@ workflows: - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - save-gradle-cache@1: {} + - save-gradle-cache@2.2.4: {} - deploy-to-bitrise-io@2: inputs: From 9534567197924d1832e1dfe26b356a019727aedf Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 25 Jan 2026 17:54:50 +0900 Subject: [PATCH 09/21] :sparkles: Feature: Downgrade save-gradle-cache step to version 1 in Bitrise workflows --- bitrise.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index f66be3ea..4cfc9ad7 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -136,7 +136,7 @@ workflows: - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - save-gradle-cache@2.2.4: {} + - save-gradle-cache@1: {} - deploy-to-bitrise-io@2: inputs: @@ -322,7 +322,7 @@ workflows: - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - save-gradle-cache@2.2.4: {} + - save-gradle-cache@1: {} - deploy-to-bitrise-io@2: inputs: From 230f62ca1ba2917249f07d20bb0c4d50b8142421 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 8 Feb 2026 17:14:56 +0900 Subject: [PATCH 10/21] :sparkles: Feature: Add conditional android-sign step in Bitrise workflows --- bitrise.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 4cfc9ad7..fd8724bd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -135,6 +135,9 @@ workflows: - gradle_file: "$PROJECT_LOCATION/build.gradle.kts" - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" + + - android-sign@1: + run_if: '{{getenv "BITRISEIO_ANDROID_KEYSTORE_URL" | ne ""}}' - save-gradle-cache@1: {} @@ -321,6 +324,9 @@ workflows: - gradle_file: "$PROJECT_LOCATION/build.gradle.kts" - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" + + - android-sign@1: + run_if: '{{getenv "BITRISEIO_ANDROID_KEYSTORE_URL" | ne ""}}' - save-gradle-cache@1: {} From 33f228cceee8627224f1110e82416c9d05c7a26e Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 8 Feb 2026 17:41:45 +0900 Subject: [PATCH 11/21] :sparkles: Feature: Rename android-sign step to sign-apk in Bitrise workflows --- bitrise.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index fd8724bd..857f638f 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -136,7 +136,7 @@ workflows: - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - android-sign@1: + - sign-apk@1: run_if: '{{getenv "BITRISEIO_ANDROID_KEYSTORE_URL" | ne ""}}' - save-gradle-cache@1: {} @@ -325,7 +325,7 @@ workflows: - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - android-sign@1: + - sign-apk@1: run_if: '{{getenv "BITRISEIO_ANDROID_KEYSTORE_URL" | ne ""}}' - save-gradle-cache@1: {} From 463c220e08d11709b2c1e92e3703027bf6e8f8d2 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 8 Feb 2026 20:50:37 +0900 Subject: [PATCH 12/21] :sparkles: Feature: Enable APK signing in Bitrise workflows --- bitrise.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 857f638f..6ea03749 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -138,6 +138,8 @@ workflows: - sign-apk@1: run_if: '{{getenv "BITRISEIO_ANDROID_KEYSTORE_URL" | ne ""}}' + inputs: + - use_apk_signer: "true" - save-gradle-cache@1: {} @@ -327,6 +329,8 @@ workflows: - sign-apk@1: run_if: '{{getenv "BITRISEIO_ANDROID_KEYSTORE_URL" | ne ""}}' + inputs: + - use_apk_signer: "true" - save-gradle-cache@1: {} From 98a8a39c370c1961d320049f0c23c00f9b5d7429 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 8 Feb 2026 21:44:42 +0900 Subject: [PATCH 13/21] :sparkles: Feature: Enhance GoogleLoginHelper with error logging --- .../presentation/login/GoogleLoginHelper.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt b/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt index 6ff6ed07..b453d104 100644 --- a/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt +++ b/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt @@ -8,8 +8,10 @@ import androidx.credentials.GetCredentialResponse import androidx.credentials.exceptions.GetCredentialException import com.google.android.libraries.identity.googleid.GetGoogleIdOption import com.google.android.libraries.identity.googleid.GoogleIdTokenCredential +import com.google.firebase.crashlytics.ktx.crashlytics import com.umc.edison.BuildConfig import com.umc.edison.R +import com.google.firebase.ktx.Firebase import com.umc.edison.common.logging.AppLogger import com.umc.edison.common.logging.UserContext import com.umc.edison.domain.DataResource @@ -59,8 +61,17 @@ class GoogleLoginHelper @Inject constructor( is androidx.credentials.exceptions.GetCredentialCancellationException -> GoogleLoginState.ERROR_MESSAGE_CANCELLED - else -> + else -> { + AppLogger.e( + "Google SignIn", + "GetCredentialException: ${e.javaClass.simpleName} - ${e.message}", + e + ) + Firebase.crashlytics.setCustomKey("google_signin_phase", "get_credential") + Firebase.crashlytics.setCustomKey("google_signin_error_type", e.javaClass.simpleName) + Firebase.crashlytics.setCustomKey("google_signin_error_message", e.message ?: "") GoogleLoginState.ERROR_MESSAGE_UNKNOWN + } } onResult(GoogleLoginState.Failure(errorMessage)) } @@ -98,11 +109,13 @@ class GoogleLoginHelper @Inject constructor( onResult(GoogleLoginState.Failure(GoogleLoginState.ERROR_MESSAGE_INVALID_TOKEN)) } } else { + AppLogger.w("Google SignIn", "CustomCredential type mismatch: ${credential.type}") onResult(GoogleLoginState.Failure()) } } else -> { + AppLogger.w("Google SignIn", "Unknown credential type: ${credential.javaClass.simpleName}") onResult(GoogleLoginState.Failure()) } } From 05202ec64f13feed542c3b98d0502323a1f9362f Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 8 Feb 2026 21:44:53 +0900 Subject: [PATCH 14/21] :sparkles: Feature: Upgrade gradle-runner and sign-apk steps to latest versions in Bitrise workflows --- bitrise.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 6ea03749..6240ab68 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -130,13 +130,13 @@ workflows: echo "Gradle Task: $GRADLE_TASK" envman add --key GRADLE_TASK --value "$GRADLE_TASK" - - gradle-runner@4.0.2: + - gradle-runner@5.0.0: inputs: - gradle_file: "$PROJECT_LOCATION/build.gradle.kts" - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - sign-apk@1: + - sign-apk@2.0.1: run_if: '{{getenv "BITRISEIO_ANDROID_KEYSTORE_URL" | ne ""}}' inputs: - use_apk_signer: "true" @@ -321,13 +321,13 @@ workflows: echo "Gradle Task: $GRADLE_TASK" envman add --key GRADLE_TASK --value "$GRADLE_TASK" - - gradle-runner@4.0.2: + - gradle-runner@5.0.0: inputs: - gradle_file: "$PROJECT_LOCATION/build.gradle.kts" - gradle_task: $GRADLE_TASK - gradle_options: "--stacktrace" - - sign-apk@1: + - sign-apk@2.0.1: run_if: '{{getenv "BITRISEIO_ANDROID_KEYSTORE_URL" | ne ""}}' inputs: - use_apk_signer: "true" From cb8a4312d255861752cc9ed2a3970422facbf2ab Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 8 Feb 2026 22:00:02 +0900 Subject: [PATCH 15/21] :sparkles: Refactor: Remove debug checks from logging methods in AppLogger --- app/src/main/java/com/umc/edison/common/logging/AppLogger.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/umc/edison/common/logging/AppLogger.kt b/app/src/main/java/com/umc/edison/common/logging/AppLogger.kt index 560c5923..c54ee7cf 100644 --- a/app/src/main/java/com/umc/edison/common/logging/AppLogger.kt +++ b/app/src/main/java/com/umc/edison/common/logging/AppLogger.kt @@ -23,13 +23,13 @@ object AppLogger { } fun w(tag: String, message: String, throwable: Throwable? = null) { - if (isDebug) Log.w(tag, message, throwable) + Log.w(tag, message, throwable) Firebase.crashlytics.log("$PREFIX_WARN$tag: $message") throwable?.let { Firebase.crashlytics.recordException(it) } } fun e(tag: String, message: String, throwable: Throwable? = null) { - if (isDebug) Log.e(tag, message, throwable) + Log.e(tag, message, throwable) Firebase.crashlytics.log("$PREFIX_ERROR$tag: $message") throwable?.let { Firebase.crashlytics.recordException(it) } } From 89e14d6baebf6e79d52a82bfc1a980310987f142 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Sun, 8 Feb 2026 23:39:19 +0900 Subject: [PATCH 16/21] Revert ":sparkles: Refactor: Remove debug checks from logging methods in AppLogger" This reverts commit c194f42811af4f75e4369bca69c87861441cc9e6. --- app/src/main/java/com/umc/edison/common/logging/AppLogger.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/umc/edison/common/logging/AppLogger.kt b/app/src/main/java/com/umc/edison/common/logging/AppLogger.kt index c54ee7cf..560c5923 100644 --- a/app/src/main/java/com/umc/edison/common/logging/AppLogger.kt +++ b/app/src/main/java/com/umc/edison/common/logging/AppLogger.kt @@ -23,13 +23,13 @@ object AppLogger { } fun w(tag: String, message: String, throwable: Throwable? = null) { - Log.w(tag, message, throwable) + if (isDebug) Log.w(tag, message, throwable) Firebase.crashlytics.log("$PREFIX_WARN$tag: $message") throwable?.let { Firebase.crashlytics.recordException(it) } } fun e(tag: String, message: String, throwable: Throwable? = null) { - Log.e(tag, message, throwable) + if (isDebug) Log.e(tag, message, throwable) Firebase.crashlytics.log("$PREFIX_ERROR$tag: $message") throwable?.let { Firebase.crashlytics.recordException(it) } } From 68fe8dd2576f5dc37001c5a27beed8f030e226b3 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Thu, 26 Feb 2026 01:35:11 +0900 Subject: [PATCH 17/21] :sparkles: Feature: use generic Crashlytics message for credential errors --- .../java/com/umc/edison/presentation/login/GoogleLoginHelper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt b/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt index b453d104..4a8ceadc 100644 --- a/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt +++ b/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt @@ -69,7 +69,7 @@ class GoogleLoginHelper @Inject constructor( ) Firebase.crashlytics.setCustomKey("google_signin_phase", "get_credential") Firebase.crashlytics.setCustomKey("google_signin_error_type", e.javaClass.simpleName) - Firebase.crashlytics.setCustomKey("google_signin_error_message", e.message ?: "") + Firebase.crashlytics.setCustomKey("google_signin_error_message", "A credential error occurred.") GoogleLoginState.ERROR_MESSAGE_UNKNOWN } } From 78ba473dd5a24ee6739a98d41dd631b72d876b57 Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Thu, 26 Feb 2026 01:35:45 +0900 Subject: [PATCH 18/21] :recycle: Refactor: loop for google-services, dynamic Discord title, default qa --- bitrise.yml | 88 +++++++++++++++++++++++------------------------------ 1 file changed, 38 insertions(+), 50 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 6240ab68..f4cefdd8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -32,29 +32,19 @@ workflows: fi fi - if [ -n "$GOOGLE_SERVICES_JSON_DEBUG" ]; then - mkdir -p app/src/debug - echo "$GOOGLE_SERVICES_JSON_DEBUG" | base64 -d > app/src/debug/google-services.json - echo "βœ“ Created app/src/debug/google-services.json" - else - echo "⚠ Warning: GOOGLE_SERVICES_JSON_DEBUG not set" - fi - - if [ -n "$GOOGLE_SERVICES_JSON_QA" ]; then - mkdir -p app/src/qa - echo "$GOOGLE_SERVICES_JSON_QA" | base64 -d > app/src/qa/google-services.json - echo "βœ“ Created app/src/qa/google-services.json" - else - echo "⚠ Warning: GOOGLE_SERVICES_JSON_QA not set" - fi - - if [ -n "$GOOGLE_SERVICES_JSON_RELEASE" ]; then - mkdir -p app/src/release - echo "$GOOGLE_SERVICES_JSON_RELEASE" | base64 -d > app/src/release/google-services.json - echo "βœ“ Created app/src/release/google-services.json" - else - echo "⚠ Warning: GOOGLE_SERVICES_JSON_RELEASE not set" - fi + for type in DEBUG QA RELEASE; do + env_var_name="GOOGLE_SERVICES_JSON_${type}" + lowercase_type=$(echo "$type" | tr '[:upper:]' '[:lower:]') + file_path="app/src/${lowercase_type}/google-services.json" + + if [ -n "${!env_var_name}" ]; then + mkdir -p "app/src/${lowercase_type}" + echo "${!env_var_name}" | base64 -d > "$file_path" + echo "βœ“ Created $file_path" + else + echo "⚠ Warning: ${env_var_name} not set" + fi + done echo "Google Services JSON files setup completed for build type: $BUILD_TYPE" @@ -122,8 +112,8 @@ workflows: GRADLE_TASK="assembleRelease" ;; *) - echo "Unknown BUILD_TYPE: $BUILD_TYPE, defaulting to debug" - GRADLE_TASK="assembleDebug" + echo "Unknown BUILD_TYPE: $BUILD_TYPE, defaulting to qa" + GRADLE_TASK="assembleQa" ;; esac @@ -161,10 +151,12 @@ workflows: EMOJI="βœ…" STATUS="Build Success" COLOR=3066993 + TITLE="πŸ“± Edison Android Build Success" else EMOJI="❌" STATUS="Build Failed" COLOR=15158332 + TITLE="πŸ“± Edison Android Build Failed" fi jq -n \ @@ -176,12 +168,13 @@ workflows: --arg version "$BITRISE_APP_VERSION" \ --arg download_url "$BITRISE_APP_URL" \ --argjson color "$COLOR" \ + --arg title "$TITLE" \ '{ username: $username, avatar_url: $avatar_url, content: $content, embeds: [{ - title: "πŸ“± Edison Android Build Success", + title: $title, color: $color, fields: [ { @@ -240,29 +233,19 @@ workflows: #!/bin/bash set -e - if [ -n "$GOOGLE_SERVICES_JSON_DEBUG" ]; then - mkdir -p app/src/debug - echo "$GOOGLE_SERVICES_JSON_DEBUG" | base64 -d > app/src/debug/google-services.json - echo "βœ“ Created app/src/debug/google-services.json" - else - echo "⚠ Warning: GOOGLE_SERVICES_JSON_DEBUG not set" - fi - - if [ -n "$GOOGLE_SERVICES_JSON_QA" ]; then - mkdir -p app/src/qa - echo "$GOOGLE_SERVICES_JSON_QA" | base64 -d > app/src/qa/google-services.json - echo "βœ“ Created app/src/qa/google-services.json" - else - echo "⚠ Warning: GOOGLE_SERVICES_JSON_QA not set" - fi - - if [ -n "$GOOGLE_SERVICES_JSON_RELEASE" ]; then - mkdir -p app/src/release - echo "$GOOGLE_SERVICES_JSON_RELEASE" | base64 -d > app/src/release/google-services.json - echo "βœ“ Created app/src/release/google-services.json" - else - echo "⚠ Warning: GOOGLE_SERVICES_JSON_RELEASE not set" - fi + for type in DEBUG QA RELEASE; do + env_var_name="GOOGLE_SERVICES_JSON_${type}" + lowercase_type=$(echo "$type" | tr '[:upper:]' '[:lower:]') + file_path="app/src/${lowercase_type}/google-services.json" + + if [ -n "${!env_var_name}" ]; then + mkdir -p "app/src/${lowercase_type}" + echo "${!env_var_name}" | base64 -d > "$file_path" + echo "βœ“ Created $file_path" + else + echo "⚠ Warning: ${env_var_name} not set" + fi + done echo "Google Services JSON files setup completed" @@ -352,25 +335,30 @@ workflows: EMOJI="βœ…" STATUS="Build Success" COLOR=3066993 + TITLE="πŸ“± Edison Android Release Build Success" else EMOJI="❌" STATUS="Build Failed" COLOR=15158332 + TITLE="πŸ“± Edison Android Release Build Failed" fi jq -n \ --arg username "Android Build Bot" \ + --arg avatar_url "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" \ --arg content "${EMOJI} **${STATUS}**" \ --arg branch "$BITRISE_GIT_BRANCH" \ --arg build_type "release" \ --arg version "$BITRISE_APP_VERSION" \ --arg download_url "$BITRISE_APP_URL" \ --argjson color "$COLOR" \ + --arg title "$TITLE" \ '{ username: $username, + avatar_url: $avatar_url, content: $content, embeds: [{ - title: "πŸ“± Edison Android Release Build Success", + title: $title, color: $color, fields: [ { From f3af95432f78c117e03d4f8d67227fdb9ff3f10f Mon Sep 17 00:00:00 2001 From: SuHyeon00 Date: Thu, 26 Feb 2026 01:49:12 +0900 Subject: [PATCH 19/21] :sparkles: Feature: add triggers --- bitrise.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index f4cefdd8..18b61bd7 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -3,6 +3,9 @@ default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git workflows: build-qa: + triggers: + push: + - branch: "develop" steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' @@ -212,6 +215,10 @@ workflows: "$DISCORD_WEBHOOK_URL" || echo "Discord notification failed" build-release: + triggers: + push: + - branch: "main" + - branch: "develop" steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' From 7aeeeca6fc317ed44fed562c46e7eea15b09b9d5 Mon Sep 17 00:00:00 2001 From: JaeminHwang49 Date: Tue, 12 May 2026 17:39:51 +0900 Subject: [PATCH 20/21] =?UTF-8?q?Firebase=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?api=20=EC=9A=94=EC=B2=AD=20body=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/umc/edison/presentation/login/GoogleLoginHelper.kt | 2 +- app/src/main/java/com/umc/edison/remote/di/NetworkModule.kt | 4 +++- .../java/com/umc/edison/remote/model/login/SignUpRequest.kt | 2 +- .../java/com/umc/edison/remote/model/login/SignUpResponse.kt | 4 ++-- app/src/main/res/values/strings.xml | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt b/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt index 4a8ceadc..58ff5ada 100644 --- a/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt +++ b/app/src/main/java/com/umc/edison/presentation/login/GoogleLoginHelper.kt @@ -41,7 +41,7 @@ class GoogleLoginHelper @Inject constructor( ) { val signInWithGoogleOption = GetGoogleIdOption.Builder() .setFilterByAuthorizedAccounts(false) - .setServerClientId(context.getString(R.string.google_cloud_server_client_id)) + .setServerClientId(context.getString(R.string.firebase_config_client_id)) .setAutoSelectEnabled(true) .build() diff --git a/app/src/main/java/com/umc/edison/remote/di/NetworkModule.kt b/app/src/main/java/com/umc/edison/remote/di/NetworkModule.kt index 13453adc..f5240d07 100644 --- a/app/src/main/java/com/umc/edison/remote/di/NetworkModule.kt +++ b/app/src/main/java/com/umc/edison/remote/di/NetworkModule.kt @@ -78,12 +78,14 @@ object NetworkModule { @Singleton fun provideRefreshRetrofit( httpLoggingInterceptor: HttpLoggingInterceptor, + hostSelectionInterceptor: HostSelectionInterceptor, gsonConverterFactory: GsonConverterFactory ): Retrofit { val okHttpClient = OkHttpClient.Builder() .connectTimeout(TIME_OUT.toLong(), TimeUnit.SECONDS) .readTimeout(TIME_OUT.toLong(), TimeUnit.SECONDS) .writeTimeout(TIME_OUT.toLong(), TimeUnit.SECONDS) + .addInterceptor(hostSelectionInterceptor) .addInterceptor(httpLoggingInterceptor) .build() @@ -93,4 +95,4 @@ object NetworkModule { .client(okHttpClient) .build() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/umc/edison/remote/model/login/SignUpRequest.kt b/app/src/main/java/com/umc/edison/remote/model/login/SignUpRequest.kt index 2fa601be..303d7471 100644 --- a/app/src/main/java/com/umc/edison/remote/model/login/SignUpRequest.kt +++ b/app/src/main/java/com/umc/edison/remote/model/login/SignUpRequest.kt @@ -9,4 +9,4 @@ data class SignUpRequest ( val nickname: String, @SerializedName("identities") val identity: List -) \ No newline at end of file +) diff --git a/app/src/main/java/com/umc/edison/remote/model/login/SignUpResponse.kt b/app/src/main/java/com/umc/edison/remote/model/login/SignUpResponse.kt index 9fb1e09b..48a5378d 100644 --- a/app/src/main/java/com/umc/edison/remote/model/login/SignUpResponse.kt +++ b/app/src/main/java/com/umc/edison/remote/model/login/SignUpResponse.kt @@ -15,8 +15,8 @@ data class SignUpResponse( val accessToken: String, @SerializedName("refreshToken") val refreshToken: String, - @SerializedName("identity") - val identity: IdentityResponse + @SerializedName("identities") + val identity: List ): RemoteMapper { override fun toData(): UserWithTokenEntity = UserWithTokenEntity( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2b5ce53e..ab6325ae 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ 버블 μ•„νŠΈλ³΄λ“œ 마이 - 574560748765-f7gcudpd69caa8otl671d7apipjqg7er.apps.googleusercontent.com + 669429282923-8cfddnme5mtcfb25r2o3md9eaepnd2m9.apps.googleusercontent.com 둜그인이 ν•„μš”ν•œ νŽ˜μ΄μ§€μž…λ‹ˆλ‹€ 둜그인으둜 더 μ•ˆμ „ν•˜κ²Œ 아이디어λ₯Ό λ³΄κ΄€ν•˜μ„Έμš”! 슀페이슀 μžλ™ μ‹œκ°ν™” κΈ°λŠ₯ 지원\nλ§žμΆ€ν˜• λ ˆν„° μΆ”μ²œκ³Ό 뢁마크 κΈ°λŠ₯ 지원 From b812060be3602177186321eca9723816598d5497 Mon Sep 17 00:00:00 2001 From: JaeminHwang49 Date: Tue, 12 May 2026 18:03:52 +0900 Subject: [PATCH 21/21] =?UTF-8?q?Firebase=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?api=20=EC=9A=94=EC=B2=AD=20body=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/umc/edison/remote/model/login/SignUpResponse.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/umc/edison/remote/model/login/SignUpResponse.kt b/app/src/main/java/com/umc/edison/remote/model/login/SignUpResponse.kt index 48a5378d..8e34bec3 100644 --- a/app/src/main/java/com/umc/edison/remote/model/login/SignUpResponse.kt +++ b/app/src/main/java/com/umc/edison/remote/model/login/SignUpResponse.kt @@ -16,7 +16,7 @@ data class SignUpResponse( @SerializedName("refreshToken") val refreshToken: String, @SerializedName("identities") - val identity: List + val identities: List ): RemoteMapper { override fun toData(): UserWithTokenEntity = UserWithTokenEntity(