Skip to content

Commit 262dbd0

Browse files
[Reactor/#1596] 콕찌르기 Compose 마이그레이션 모듈 추가 및 공통 컴포넌트 구현 (#1601)
* [ADD#1596] poke-v2 모듈 추가 * [ADD#1596] 이미지, 로티 추가 * [ADD#1596] kotlin-collections-immutable 의존성 추가 * [FEAT#1596] 콕찌르기 공통 컴포넌트 UiStateModel 구현 * `PokeUserUiState` 추가 * 친구 목록 섹션을 관리하기 위해 `FriendListUiState` 및 `FriendListSummaryUiState` 추가 * `PokeViewType` 추가 * title과 description을 포함하도록 `PokeFriendType` 업데이트 * [FEAT#1596] 콕찌르기 공통 컴포넌트 구현 * 콕 찌르기 컴포넌트 구현 Small, Large * 콕 찌르기 친구 목록 컴포넌트 구현 * [ADD#1596] 임시 파일 추가 * [CHORE#1596] 중복 의존성 제거 * [MOD#1596] ImmutableList 적용 * [MOD#1596] 미사용 @composable 어노테이션 제거 * [CHORE#1596] 파라미터 순서 변경 * [MOD#1596] PokeFriendListBlock 구조 개선 - `FriendListSummaryUiState` 제거 - `PokeFriendListSections` typealias 및 emptyPokeFriendListSections() 팩토리 함수 추가 - `PokeFriendListBlock` 파라미터 sections: PokeFriendListSections로 변경하여 타입 매핑 구조로 수정 * [CHORE#1596] 파라미터 이름 변경
1 parent 1d211aa commit 262dbd0

29 files changed

Lines changed: 2833 additions & 5 deletions

domain/poke/src/main/java/org/sopt/official/domain/poke/type/PokeFriendType.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* MIT License
3-
* Copyright 2023-2024 SOPT - Shout Our Passion Together
3+
* Copyright 2023-2026 SOPT - Shout Our Passion Together
44
*
55
* Permission is hereby granted, free of charge, to any person obtaining a copy
66
* of this software and associated documentation files (the "Software"), to deal
@@ -27,17 +27,25 @@ package org.sopt.official.domain.poke.type
2727
enum class PokeFriendType(
2828
val typeName: String,
2929
val readableName: String,
30+
val title: String,
31+
val description: String
3032
) {
3133
NEW(
3234
typeName = "new",
33-
readableName = "친한친구"
35+
readableName = "친한친구",
36+
title = "나랑 친한 친구",
37+
description = "2번 이상 찌르면 될 수 있어요"
3438
),
3539
BEST_FRIEND(
3640
typeName = "bestfriend",
37-
readableName = "단짝친구"
41+
readableName = "단짝친구",
42+
title = "나랑 단짝친구",
43+
description = "5번 이상 찌르면 될 수 있어요"
3844
),
3945
SOULMATE(
4046
typeName = "soulmate",
41-
readableName = "천생연분"
42-
),
47+
readableName = "천생연분",
48+
title = "나랑 천생연분",
49+
description = "11번 이상 찌르면 될 수 있어요"
50+
)
4351
}

feature/poke-v2/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

feature/poke-v2/build.gradle.kts

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* MIT License
3+
* Copyright 2026 SOPT - Shout Our Passion Together
4+
*
5+
* Permission is hereby granted, free of charge, to any person obtaining a copy
6+
* of this software and associated documentation files (the "Software"), to deal
7+
* in the Software without restriction, including without limitation the rights
8+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
* copies of the Software, and to permit persons to whom the Software is
10+
* furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be included in all
13+
* copies or substantial portions of the Software.
14+
*
15+
* https://www.apache.org/licenses/LICENSE-2.0
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23+
* SOFTWARE.
24+
*/
25+
plugins {
26+
sopt("feature")
27+
sopt("compose")
28+
}
29+
30+
android {
31+
namespace = "org.sopt.official.feature.poke.v2"
32+
}
33+
34+
dependencies {
35+
36+
// core
37+
implementation(projects.core.model)
38+
implementation(projects.core.common)
39+
implementation(projects.core.designsystem)
40+
implementation(projects.core.navigation)
41+
implementation(projects.core.analytics)
42+
43+
// domain
44+
implementation(projects.domain.poke)
45+
46+
// compose
47+
implementation(libs.lifecycle.runtime)
48+
implementation(libs.compose.activity)
49+
implementation(platform(libs.compose.bom))
50+
implementation(libs.compose.ui)
51+
implementation(libs.compose.ui.tooling.preview)
52+
implementation(libs.compose.material.three)
53+
implementation(libs.compose.navigation)
54+
implementation(libs.compose.hilt.navigation)
55+
implementation(libs.coil.compose)
56+
57+
androidTestImplementation(platform(libs.compose.bom))
58+
androidTestImplementation(libs.compose.junit)
59+
debugImplementation(libs.compose.ui.tooling)
60+
debugImplementation(libs.compose.ui.test)
61+
62+
// firebase
63+
implementation(platform(libs.firebase))
64+
implementation(libs.bundles.firebase)
65+
66+
// etc
67+
implementation(libs.kotlin.collections.immutable)
68+
implementation(libs.swipe.refresh.layout)
69+
implementation(libs.coil.core)
70+
implementation(libs.android.lottie)
71+
72+
}

feature/poke-v2/consumer-rules.pro

Whitespace-only changes.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* MIT License
3+
* Copyright 2026 SOPT - Shout Our Passion Together
4+
*
5+
* Permission is hereby granted, free of charge, to any person obtaining a copy
6+
* of this software and associated documentation files (the "Software"), to deal
7+
* in the Software without restriction, including without limitation the rights
8+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
* copies of the Software, and to permit persons to whom the Software is
10+
* furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be included in all
13+
* copies or substantial portions of the Software.
14+
*
15+
* https://www.apache.org/licenses/LICENSE-2.0
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23+
* SOFTWARE.
24+
*/
25+
package org.sopt.official.feature.poke.v2
26+
27+
import androidx.test.platform.app.InstrumentationRegistry
28+
import androidx.test.ext.junit.runners.AndroidJUnit4
29+
import org.junit.Test
30+
import org.junit.runner.RunWith
31+
import org.junit.Assert.*
32+
33+
/**
34+
* Instrumented test, which will execute on an Android device.
35+
*
36+
* See [testing documentation](http://d.android.com/tools/testing).
37+
*/
38+
@RunWith(AndroidJUnit4::class)
39+
class ExampleInstrumentedTest {
40+
@Test
41+
fun useAppContext() {
42+
// Context of the app under test.
43+
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
44+
assertEquals("org.sopt.official.feature.poke.v2.test", appContext.packageName)
45+
}
46+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
MIT License
4+
5+
Copyright 2026 SOPT - Shout Our Passion Together
6+
7+
Permission is hereby granted, free of charge, to any person obtaining a copy
8+
of this software and associated documentation files (the "Software"), to deal
9+
in the Software without restriction, including without limitation the rights
10+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11+
copies of the Software, and to permit persons to whom the Software is
12+
furnished to do so, subject to the following conditions:
13+
14+
The above copyright notice and this permission notice shall be included in all
15+
copies or substantial portions of the Software.
16+
17+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23+
SOFTWARE.
24+
-->
25+
<manifest>
26+
27+
</manifest>

0 commit comments

Comments
 (0)