Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
14c8bec
[refactor] #91 글 등록하기(바텀 네비게이션)버튼 배경 색상 수정
kamja0510 Jan 29, 2026
ea38e0f
[refactor] #91 DPlayChip png 파일로 사용하는 것으로 변경
kamja0510 Jan 29, 2026
768878c
[refactor] #91 상세, 홈 에서 내 프로필 누르면 마이 페이지로 이동하는 로직 추가
kamja0510 Jan 29, 2026
8c653fa
[refactor] #91 검색 empty view 문자 스타일 변경
kamja0510 Jan 29, 2026
46ee33d
[refactor] #91 글 등록 곡 정보 디자인 수정
kamja0510 Jan 29, 2026
9126e0e
[refactor] #91 커뮤니티 가이드 버튼 space 수정
kamja0510 Jan 29, 2026
cef896f
[refactor] #91 모달 라운드 값 수정
kamja0510 Jan 29, 2026
3424c4f
[refactor] #91 앱 네이밍, 앱 아이콘 수정
kamja0510 Jan 29, 2026
28b2f52
[refactor] #91 알림 문구 수정
kamja0510 Jan 29, 2026
e95d955
[feat] #91 에러 화면 구현
kamja0510 Jan 29, 2026
1661baa
[feat] #91 로딩 화면 구현
kamja0510 Jan 29, 2026
191297d
[feat] #91 로딩 상태 정의
kamja0510 Jan 29, 2026
b5754b6
[refactor] #91 errorScreen에 onBackIconClick 달기
kamja0510 Jan 29, 2026
eed0fa3
[refactor] #91 에러뷰 붙어야 될 것 같은 화면(화면 진입 시 데이터 로드 하는 api있는 화면)에 에러뷰 붙이기
kamja0510 Jan 29, 2026
724985c
[chore] #91 ktlint
kamja0510 Jan 29, 2026
b19c5fc
[feat] #93 릴리즈 설정
kamja0510 Jan 29, 2026
f0a3fd1
[fix] #93 난독화 하면서 kakao sdk 오류 수정
kamja0510 Jan 29, 2026
afb06ca
[chore] #93 릴리즈 빌드 시 생성되는 output-metadata.json, app-release.dm gitign…
kamja0510 Jan 29, 2026
0e8f612
[chore] #93 안쓰이는 recommend모듈 삭제
kamja0510 Jan 29, 2026
e2998b7
[refactor] #93 앱 버전 BuildConfig 이용해서 구현
kamja0510 Jan 29, 2026
9791f35
[fix] #93 보관함 탭에서 내 post의 상세페이지를 들어갔다가 삭제하고 나올 경우 삭제하고 refreshTrigger…
kamja0510 Jan 29, 2026
95eaa55
[chore] #93 ktlint
kamja0510 Jan 29, 2026
fe7779d
[refactor] #93 ci 환경에서 서명 인증 과정 스킵 추후에 CD 구현 시 추가
kamja0510 Jan 30, 2026
ec67248
[refactor] #93 ci 환경에서도 서명인증 정보 알 수 있도록 구현
kamja0510 Jan 30, 2026
6191a44
[fix] #95 날짜 정사각형으로 변경
t1nm1ksun Jan 31, 2026
7cf7482
[fix] #95 재생버튼 패딩 수정
t1nm1ksun Jan 31, 2026
2cc837f
[fix] #95 노래제목, 가수 패딩추가 및 배경 커버 gradient적용
t1nm1ksun Jan 31, 2026
bdff0d3
[fix] #95 과거 기록 백핸들러추가
t1nm1ksun Jan 31, 2026
f3bc09e
ktlint format
t1nm1ksun Jan 31, 2026
eb0fcdc
[fix] #95 스크랩, 좋아요 상태 변경 시 홈 리프레시 호출
t1nm1ksun Jan 31, 2026
65849c0
ktlint format
t1nm1ksun Jan 31, 2026
06cc077
[fix] #95 작성자 isAdmin 값 추가
t1nm1ksun Jan 31, 2026
eb93fab
[fix] #95 키 이미지 변경
t1nm1ksun Jan 31, 2026
ec9a029
Merge pull request #92 from DIGGING-PLAY/refactor/#91-qa-2-ui-jaemin
kamja0510 Jan 31, 2026
e66ebf6
[fix] #95 enum 변수명 수정
t1nm1ksun Jan 31, 2026
43a1a59
Merge remote-tracking branch 'origin/develop' into refactor/#95-secon…
t1nm1ksun Jan 31, 2026
c6ff7df
resolve conflict
t1nm1ksun Jan 31, 2026
37a54ab
[fix] #95 과거기록 툴팁 추가
t1nm1ksun Feb 1, 2026
52bfdfd
[fix] #95 에디터 프로필 추가
t1nm1ksun Feb 1, 2026
83fd479
[fix] #95 체크 아이템 영역 수정
t1nm1ksun Feb 1, 2026
d235dbf
[fix] #95 온보딩 닉네임 텍스트필드 패딩 수정
t1nm1ksun Feb 1, 2026
a0b9769
[fix] #95 프로필 수정 닉네임 텍스트 인풋 패딩 수정
t1nm1ksun Feb 1, 2026
029ac2c
ktlint format
t1nm1ksun Feb 1, 2026
7ee2bc5
[fix] #95 과거 기록 화면 날짜 설정 로직 적용
t1nm1ksun Feb 1, 2026
98c137e
[fix] #95 앱이름 한국어로 수정
t1nm1ksun Feb 1, 2026
3a0dc26
Merge pull request #96 from DIGGING-PLAY/refactor/#95-second-qa
kamja0510 Feb 2, 2026
8e34ffc
[feat] #93 릴리즈 설정
kamja0510 Jan 29, 2026
f92d153
[fix] #93 난독화 하면서 kakao sdk 오류 수정
kamja0510 Jan 29, 2026
ec27f79
[chore] #93 릴리즈 빌드 시 생성되는 output-metadata.json, app-release.dm gitign…
kamja0510 Jan 29, 2026
96cc617
[chore] #93 안쓰이는 recommend모듈 삭제
kamja0510 Jan 29, 2026
78c7cc3
[refactor] #93 앱 버전 BuildConfig 이용해서 구현
kamja0510 Jan 29, 2026
6b57bae
[fix] #93 보관함 탭에서 내 post의 상세페이지를 들어갔다가 삭제하고 나올 경우 삭제하고 refreshTrigger…
kamja0510 Jan 29, 2026
d99ff81
[chore] #93 ktlint
kamja0510 Jan 29, 2026
8660ef1
[refactor] #93 ci 환경에서 서명 인증 과정 스킵 추후에 CD 구현 시 추가
kamja0510 Jan 30, 2026
fbfdbf0
[refactor] #93 ci 환경에서도 서명인증 정보 알 수 있도록 구현
kamja0510 Jan 30, 2026
aa7b40b
[chore] #93 패키지명 변경
kamja0510 Mar 6, 2026
a05fba5
Merge remote-tracking branch 'origin/release/v1.0.0' into release/v1.0.0
kamja0510 Mar 6, 2026
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
11 changes: 10 additions & 1 deletion .github/workflows/dplay_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,17 @@ jobs:
echo "base.url=$BASE_URL" >> local.properties
echo "kakao.app.key=$KAKAO_APP_KEY" >> local.properties

- name: Decode Keystore
run : |
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > ./keystore.jks

- name: Run Ktlint Check
run: ./gradlew ktlintCheck

- name: Build with Gradle
run: ./gradlew build
run: ./gradlew build
env:
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
STORE_FILE: ./keystore.jks
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -181,4 +181,7 @@ fabric.properties

!/gradle/wrapper/gradle-wrapper.jar

# End of https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin
# End of https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin

output-metadata.json
app-release.dm
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ val kakaoNativeKey: String =
?: throw GradleException("KAKAO_APP_KEY (or local kakao.app.key) is missing")

android {
namespace = "com.dplay"
namespace = "com.diggingplay"

defaultConfig {
applicationId = "com.dplay"
applicationId = "com.diggingplay"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

Expand Down
24 changes: 3 additions & 21 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,21 +1,3 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# 카카오 sdk 내부에 모델이 이름이 바뀌어 NoSuchFieldException 발생 방지
-keep class com.kakao.sdk.auth.model.** { *; }
-keep class com.kakao.sdk.common.model.** { *; }
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dplay
package com.diggingplay

import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
Expand All @@ -17,6 +17,6 @@ class ExampleInstrumentedTest {
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.dplay", appContext.packageName)
assertEquals("com.diggingplay", appContext.packageName)
}
}
Binary file modified app/src/main/ic_launcher-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dplay
package com.diggingplay

import com.example.navigation.Navigator
import com.example.navigation.Splash
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.dplay
package com.diggingplay

import android.app.Application
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import com.dplay.worker.DailyQuestionWorker
import com.diggingplay.worker.DailyQuestionWorker
import com.kakao.sdk.common.KakaoSdk
import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dplay.worker
package com.diggingplay.worker

import android.app.NotificationChannel
import android.app.NotificationManager
Expand All @@ -9,7 +9,7 @@ import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.work.Worker
import androidx.work.WorkerParameters
import com.dplay.R
import com.diggingplay.R
import com.example.main.MainActivity

class DailyQuestionWorker(
Expand All @@ -24,6 +24,8 @@ class DailyQuestionWorker(
private fun showNotification() {
val notificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val title = context.getString(R.string.notification_title)
val content = context.getString(R.string.notification_content)

// 명시적으로 버전 관리
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Expand Down Expand Up @@ -55,8 +57,8 @@ class DailyQuestionWorker(
NotificationCompat
.Builder(context, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(NOTIFICATION_CONTENT_TITLE)
.setContentText(NOTIFICATION_CONTENT_TEXT)
.setContentTitle(title)
.setContentText(content)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
Expand All @@ -70,8 +72,6 @@ class DailyQuestionWorker(
const val CHANNEL_NAME = "Daily Question"
const val CHANNEL_DESCRIPTION = "Daily Question Notification"
const val NOTIFICATION_ID = 1001
const val NOTIFICATION_CONTENT_TITLE = "오늘의 질문이 도착했습니다!"
const val NOTIFICATION_CONTENT_TEXT = "지금 바로 확인해보세요."
const val WORK_NAME = "daily_question_work"
const val TAG = "DailyQuestionWorker"
}
Expand Down
Binary file modified app/src/main/res/mipmap-hdpi/ic_launcher.webp
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 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
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 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
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 app/src/main/res/mipmap-mdpi/ic_launcher.webp
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 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
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 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
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 app/src/main/res/mipmap-xhdpi/ic_launcher.webp
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 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
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 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
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 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
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 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
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 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
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 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
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 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
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 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<resources>
<string name="app_name">DPlay</string>
<string name="app_name">디플레이</string>
<string name="notification_title">디플레이</string>
<string name="notification_content">오늘의 질문이 도착했어요</string>
</resources>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dplay
package com.diggingplay

import junit.framework.TestCase.assertEquals
import org.junit.Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import java.io.FileInputStream
import java.util.Properties

class AndroidApplicationConventionPlugin: Plugin<Project> {
Expand All @@ -21,6 +22,13 @@ class AndroidApplicationConventionPlugin: Plugin<Project> {
apply("org.jlleitschuh.gradle.ktlint")
}

val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("local.properties")
val isLocalPropertiesExists = keystorePropertiesFile.exists()
if (isLocalPropertiesExists) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}

extensions.configure<ApplicationExtension> {
configureKotlinAndroid(this)
configureComposeAndroid(this)
Expand All @@ -31,8 +39,42 @@ class AndroidApplicationConventionPlugin: Plugin<Project> {
versionName = libs.getVersion("versionName").requiredVersion
}

dependencies{
add("implementation",libs.getLibrary("timber"))
signingConfigs {
create("release") {
keyAlias = (keystoreProperties["keyAlias"] as? String)
?: System.getenv("KEY_ALIAS")

keyPassword = (keystoreProperties["keyPassword"] as? String)
?: System.getenv("KEY_PASSWORD")

storePassword = (keystoreProperties["storePassword"] as? String)
?: System.getenv("STORE_PASSWORD")

val keyStoreFile = (keystoreProperties["storeFile"] as? String)
?: System.getenv("STORE_FILE")

if (keyStoreFile != null) {
storeFile = rootProject.file(keyStoreFile)
}
}
}

buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
)
if (keystoreProperties.getProperty("storeFile") != null || System.getenv("STORE_FILE") != null) {
signingConfig = signingConfigs.getByName("release")
}
}
}

dependencies {
add("implementation", libs.getLibrary("timber"))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ class AuthRemoteDataSource

suspend fun reissue(refreshToken: String): TokenResponse {
try {
val response = authService.reissue(refreshToken = refreshToken)
val response = authService.reissue(refreshToken = "Bearer $refreshToken")
return response.data ?: throw Exception("Data is null")
} catch (e: Exception) {
throw e
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class QuestionPostsPagingSource(
private val postService: PostService,
private val questionId: Long,
private val onTotalCountFetched: (Int) -> Unit,
private val onLockedFetched: (Boolean) -> Unit,
) : PagingSource<String, QuestionPostItemResponse>() {
override fun getRefreshKey(state: PagingState<String, QuestionPostItemResponse>): String? = null

Expand All @@ -26,6 +27,7 @@ class QuestionPostsPagingSource(
val data = response.data ?: throw Exception("data is null")
if (params.key == null) {
onTotalCountFetched(data.totalCount)
onLockedFetched(data.locked)
}
val posts = data.items
val nextCursor = data.nextCursor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.example.data.mapper.todomain
import com.example.data.model.response.TodayPostItemResponse
import com.example.data.model.response.TodayPostTrackResponse
import com.example.data.model.response.TodayPostsResponse
import com.example.domain.model.BADGE
import com.example.domain.model.Badge
import com.example.domain.model.DailyQuestion
import com.example.domain.model.FeedItem
import com.example.domain.model.HomeScreenData
Expand All @@ -28,7 +28,7 @@ fun TodayPostItemResponse.toDomain(): FeedItem =
postId = postId,
isScrapped = isScrapped,
content = content,
badge = badge?.let { BADGE.valueOf(it) },
badge = badge?.let { Badge.valueOf(it) },
track = track.toDomain(),
writer = user.toDomain(),
like = like.toDomain(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ fun UserResponse.toDomain(): Writer =
userId = this.userId,
nickname = this.nickname,
profileImg = this.profileImg,
isAdmin = this.isAdmin,
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.data.model.response

import com.example.domain.model.BADGE
import com.example.domain.model.Badge
import com.example.domain.model.FeedItem
import com.example.domain.model.Like
import com.example.domain.model.Track
Expand Down Expand Up @@ -52,7 +52,7 @@ data class QuestionPostItemResponse(
postId = postId,
isScrapped = isScrapped,
content = content,
badge = if (isEditorPick) BADGE.EDITOR else null,
badge = if (isEditorPick) Badge.EDITOR else null,
track =
Track(
trackId = track.trackId,
Expand All @@ -66,6 +66,7 @@ data class QuestionPostItemResponse(
userId = user.userId,
nickname = user.nickname,
profileImg = user.profileImg.orEmpty(),
isAdmin = user.isAdmin,
),
like =
Like(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ data class UserResponse(
val nickname: String,
@SerialName("profileImg")
val profileImg: String?,
@SerialName("isAdmin")
val isAdmin: Boolean,
)
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ class PostRepositoryImpl
override fun getPostsByQuestionId(
questionId: Long,
onTotalCountFetched: (Int) -> Unit,
onLockedFetched: (Boolean) -> Unit,
): Flow<PagingData<FeedItem>> =
Pager(
config =
Expand All @@ -101,6 +102,7 @@ class PostRepositoryImpl
postService = postService,
questionId = questionId,
onTotalCountFetched = onTotalCountFetched,
onLockedFetched = onLockedFetched,
)
},
).flow.map { pagingData ->
Expand Down
Loading