-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
close #48
- Loading branch information
Showing
55 changed files
with
1,473 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
android/2023-emmsale/app/src/main/java/com/emmsale/data/activity/Activity1.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.emmsale.data.activity | ||
|
||
data class Activity1( | ||
val id: Long, | ||
val activityType: ActivityType, | ||
val name: String, | ||
) |
5 changes: 5 additions & 0 deletions
5
android/2023-emmsale/app/src/main/java/com/emmsale/data/activity/ActivityType.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package com.emmsale.data.activity | ||
|
||
enum class ActivityType { | ||
EDUCATION, CLUB, EVENT, JOB | ||
} |
15 changes: 15 additions & 0 deletions
15
android/2023-emmsale/app/src/main/java/com/emmsale/data/member/Member1.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package com.emmsale.data.member | ||
|
||
import com.emmsale.data.activity.Activity1 | ||
import com.emmsale.data.activity.ActivityType | ||
|
||
data class Member1( | ||
val id: Long, | ||
val name: String, | ||
val description: String, | ||
val imageUrl: String, | ||
val activities: List<Activity1>, | ||
) { | ||
fun getActivities(activityType: ActivityType): List<Activity1> = | ||
activities.filter { it.activityType == activityType } | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
23 changes: 23 additions & 0 deletions
23
android/2023-emmsale/app/src/main/java/com/emmsale/data/member/MemberRepositoryImpl.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 12 additions & 1 deletion
13
android/2023-emmsale/app/src/main/java/com/emmsale/data/member/MemberService.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,22 @@ | ||
package com.emmsale.data.member | ||
|
||
import com.emmsale.data.member.dto.ActivitiesAssociatedByActivityTypeApiModel | ||
import com.emmsale.data.member.dto.MemberApiModel | ||
import com.emmsale.data.member.dto.MemberWithoutActivitiesApiModel | ||
import retrofit2.Response | ||
import retrofit2.http.Body | ||
import retrofit2.http.GET | ||
import retrofit2.http.POST | ||
import retrofit2.http.Path | ||
|
||
interface MemberService { | ||
|
||
@GET("members/{memberId}") | ||
suspend fun getMember(@Path("memberId") memberId: Long): Response<MemberWithoutActivitiesApiModel> | ||
|
||
@GET("members/{memberId}/activities") | ||
suspend fun getActivities(@Path("memberId") memberId: Long): Response<List<ActivitiesAssociatedByActivityTypeApiModel>> | ||
|
||
@POST("/members") | ||
suspend fun updateMember(@Body member: MemberApiModel): Response<Unit> | ||
} | ||
} |
18 changes: 18 additions & 0 deletions
18
...p/src/main/java/com/emmsale/data/member/dto/ActivitiesAssociatedByActivityTypeApiModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package com.emmsale.data.member.dto | ||
|
||
import kotlinx.serialization.SerialName | ||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
data class ActivitiesAssociatedByActivityTypeApiModel( | ||
@SerialName("activityType") | ||
val activityType: String, | ||
@SerialName("memberActivityResponses") | ||
val memberActivityResponses: List<ActivityApiModel>, | ||
) | ||
|
||
@Serializable | ||
data class ActivityApiModel( | ||
val id: Long, | ||
val name: String, | ||
) |
16 changes: 16 additions & 0 deletions
16
...-emmsale/app/src/main/java/com/emmsale/data/member/dto/MemberWithoutActivitiesApiModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package com.emmsale.data.member.dto | ||
|
||
import kotlinx.serialization.SerialName | ||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
data class MemberWithoutActivitiesApiModel( | ||
@SerialName("id") | ||
val id: Long, | ||
@SerialName("name") | ||
val name: String = "", | ||
@SerialName("description") | ||
val description: String = "", | ||
@SerialName("imageUrl") | ||
val imageUrl: String, | ||
) |
37 changes: 37 additions & 0 deletions
37
android/2023-emmsale/app/src/main/java/com/emmsale/data/member/mapper/MemberMapper.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package com.emmsale.data.member.mapper | ||
|
||
import com.emmsale.data.activity.Activity1 | ||
import com.emmsale.data.activity.ActivityType | ||
import com.emmsale.data.member.Member1 | ||
import com.emmsale.data.member.dto.ActivitiesAssociatedByActivityTypeApiModel | ||
import com.emmsale.data.member.dto.MemberWithoutActivitiesApiModel | ||
|
||
fun MemberWithoutActivitiesApiModel.toData(activities: List<ActivitiesAssociatedByActivityTypeApiModel>): Member1 = | ||
Member1( | ||
id = this.id, | ||
name = this.name, | ||
description = this.description, | ||
imageUrl = this.imageUrl, | ||
activities = activities.toData() | ||
) | ||
|
||
private fun List<ActivitiesAssociatedByActivityTypeApiModel>.toData(): List<Activity1> = | ||
this.flatMap { it.toData() } | ||
|
||
private fun ActivitiesAssociatedByActivityTypeApiModel.toData(): List<Activity1> = | ||
memberActivityResponses.map { | ||
Activity1( | ||
id = it.id, | ||
activityType = activityType.toData(), | ||
name = it.name | ||
) | ||
} | ||
|
||
private fun String.toData(): ActivityType = | ||
when (this) { | ||
"동아리" -> ActivityType.CLUB | ||
"컨퍼런스" -> ActivityType.EVENT | ||
"교육" -> ActivityType.EDUCATION | ||
"직무" -> ActivityType.JOB | ||
else -> throw IllegalStateException("회원의 활동 Json 데이터를 도메인 모델로 매핑하는 데 실패했습니다. 서버와 Api 스펙을 다시 상의해보세요.") | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
57 changes: 55 additions & 2 deletions
57
android/2023-emmsale/app/src/main/java/com/emmsale/presentation/ui/main/MainActivity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,65 @@ | ||
package com.emmsale.presentation.ui.main | ||
|
||
import android.os.Bundle | ||
import android.content.Context | ||
import android.content.Intent | ||
import androidx.appcompat.app.AppCompatActivity | ||
import android.os.Bundle | ||
import androidx.fragment.app.commit | ||
import androidx.fragment.app.commitNow | ||
import com.emmsale.R | ||
import com.emmsale.databinding.ActivityMainBinding | ||
import com.emmsale.presentation.ui.main.events.EventsFragment | ||
import com.emmsale.presentation.ui.main.myProfile.MyProfileFragment | ||
|
||
class MainActivity : AppCompatActivity() { | ||
|
||
private val binding: ActivityMainBinding by lazy { | ||
ActivityMainBinding.inflate(layoutInflater) | ||
} | ||
|
||
override fun onCreate(savedInstanceState: Bundle?) { | ||
super.onCreate(savedInstanceState) | ||
setContentView(R.layout.activity_main) | ||
setContentView(binding.root) | ||
|
||
initBottomNavigationView() | ||
} | ||
|
||
private fun initBottomNavigationView() { | ||
val mainBottomNavigationView = binding.bnvMain | ||
|
||
addAllFragments() | ||
|
||
mainBottomNavigationView.setOnItemSelectedListener { | ||
when (it.itemId) { | ||
R.id.mi_main_profile -> showFragment(MyProfileFragment.TAG) | ||
R.id.mi_main_home -> showFragment(EventsFragment.TAG) | ||
} | ||
return@setOnItemSelectedListener true | ||
} | ||
|
||
mainBottomNavigationView.selectedItemId = R.id.mi_main_home | ||
} | ||
|
||
private fun addAllFragments() { | ||
supportFragmentManager.commitNow { | ||
add(R.id.fcv_main, MyProfileFragment(), MyProfileFragment.TAG) | ||
add(R.id.fcv_main, EventsFragment(), EventsFragment.TAG) | ||
} | ||
} | ||
|
||
private fun showFragment(tag: String) { | ||
supportFragmentManager.commit { | ||
val fragment = supportFragmentManager.findFragmentByTag(tag) | ||
?: throw IllegalStateException("태그 ${tag}로 프래그먼트를 찾을 수 없습니다. 프래그먼트 초기화 로직을 다시 살펴보세요.") | ||
supportFragmentManager.fragments.forEach { hide(it) } | ||
show(fragment) | ||
} | ||
} | ||
|
||
companion object { | ||
fun startActivity(context: Context) { | ||
val intent = Intent(context, MainActivity::class.java) | ||
context.startActivity(intent) | ||
} | ||
} | ||
} |
Oops, something went wrong.