diff --git a/.github/workflows/Android-release CD.yml b/.github/workflows/Android-release CD.yml
index 087926cc..c08b01ee 100644
--- a/.github/workflows/Android-release CD.yml
+++ b/.github/workflows/Android-release CD.yml
@@ -55,17 +55,31 @@ jobs:
echo '${{ secrets.SENTRY_PROPERTIES }}' > ./app/src/main/resources/sentry.properties
# Build AAB Release
- - name: Build release Bundle
+ - name: Build release Bundle (1.x.x)
run: ./gradlew clean bundleRelease
+ if: startsWith(github.ref, 'refs/heads/release/1.')
+
+ - name: Build prodRelease Bundle (2.x.x+)
+ run: ./gradlew clean bundleProdRelease
+ if: startsWith(github.ref, 'refs/heads/release/') && !startsWith(github.ref, 'refs/heads/release/1.')
# Upload Google Play
- - name: Deploy to Play Store ๐
+ - name: Deploy to Play Store ๐ (1.x.x)
+ uses: r0adkll/upload-google-play@v1
+ with:
+ serviceAccountJsonPlainText: ${{ secrets.ANDROID_SERVICE_ACCOUNT_JSON }}
+ packageName: ${{ secrets.AOS_PACKAGE_NAME }}
+ releaseFiles: app/build/outputs/bundle/release/app-release.aab
+ track: production
+ status: draft
+ if: startsWith(github.ref, 'refs/heads/release/1.')
+
+ - name: Deploy to Play Store ๐ (2.0.0+)
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.ANDROID_SERVICE_ACCOUNT_JSON }}
- packageName: ${{secrets.AOS_PACKAGE_NAME}}
- releaseFiles: ./app/build/outputs/bundle/release/app-release.aab
+ packageName: ${{ secrets.AOS_PACKAGE_NAME }}
+ releaseFiles: app/build/outputs/bundle/prodRelease/app-prod-release.aab
track: production
status: draft
- if: github.ref != 'refs/heads/main'
-
+ if: startsWith(github.ref, 'refs/heads/release/') && !startsWith(github.ref, 'refs/heads/release/1.')
diff --git a/.gitignore b/.gitignore
index 2c3dfb68..80750c2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,6 +30,7 @@ build/
# Local configuration file (sdk path, etc)
local.properties
+*.properties
# Proguard folder generated by Eclipse
proguard/
@@ -54,7 +55,7 @@ captures/
*.keystore
# Google Services (e.g. APIs or Firebase)
-# google-services.json
+google-services.json
# Android Patch
gen-external-apklibs
@@ -71,30 +72,7 @@ obj/
/out/
# User-specific configurations
-.idea/caches/
-.idea/libraries/
-.idea/shelf/
-.idea/workspace.xml
-.idea/tasks.xml
-.idea/.name
-.idea/compiler.xml
-.idea/copyright/profiles_settings.xml
-.idea/encodings.xml
-.idea/misc.xml
-.idea/modules.xml
-.idea/scopes/scope_settings.xml
-.idea/dictionaries
-.idea/vcs.xml
-.idea/jsLibraryMappings.xml
-.idea/datasources.xml
-.idea/dataSources.ids
-.idea/sqlDataSources.xml
-.idea/dynamic.xml
-.idea/uiDesigner.xml
-.idea/assetWizardSettings.xml
-.idea/gradle.xml
-.idea/jarRepositories.xml
-.idea/navEditor.xml
+.idea/
# OS-specific files
.DS_Store
diff --git a/README.md b/README.md
index 08bfd853..a8ff7f83 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ git clone git@github.com:Daily-DAYO/DAYO_Android.git
## Application Version
- minSdkVersion : 26
-- targetSdkVersion : 33
+- targetSdkVersion : 35
## Git Convention
- Create issue
diff --git a/app/build.gradle b/app/build.gradle
index 5bc4e3ae..84f401f2 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -11,6 +11,7 @@ plugins {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def NATIVE_APP_KEY = properties.getProperty('NATIVE_APP_KEY')
+def ADS_APPLICATION_ID = properties.getProperty('ADS_APPLICATION_ID')
def keystorePropertiesFile = rootProject.file("app/keystore-release.properties")
sentry {
@@ -26,18 +27,22 @@ kotlin {
}
android {
+ compileSdk rootProject.ext.compileSdkVersion
+
defaultConfig {
applicationId "com.daily.dayo"
- compileSdk 34
- minSdkVersion 26
- targetSdkVersion 34
- versionCode 11500
- versionName "1.1.5"
+ minSdkVersion rootProject.ext.minSdkVersion
+ targetSdkVersion rootProject.ext.targetSdkVersion
+ versionCode 20000
+ versionName "2.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildConfigField ("String", "NATIVE_APP_KEY", properties['NATIVE_APP_KEY_STR'])
- manifestPlaceholders = [NATIVE_APP_KEY: NATIVE_APP_KEY]
+ manifestPlaceholders = [
+ NATIVE_APP_KEY : NATIVE_APP_KEY,
+ ADS_APPLICATION_ID: ADS_APPLICATION_ID
+ ]
}
signingConfigs {
@@ -59,6 +64,7 @@ android {
buildTypes {
debug {
+ minifyEnabled false
applicationIdSuffix ".debug"
versionNameSuffix "-debug"
resValue "string", "app_name", "DAYO (Debug)"
@@ -70,6 +76,17 @@ android {
signingConfig signingConfigs.release
}
}
+ flavorDimensions = ["environment"]
+ productFlavors {
+ dev {
+ dimension "environment"
+ buildConfigField("String", "BASE_URL", properties['BASE_URL_DEV'])
+ }
+ prod {
+ dimension "environment"
+ buildConfigField("String", "BASE_URL", properties['BASE_URL_PROD'])
+ }
+ }
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
@@ -102,4 +119,7 @@ dependencies {
// Firebase
implementation 'com.google.firebase:firebase-crashlytics-ktx'
implementation 'com.google.firebase:firebase-analytics-ktx'
+
+ // Google Ads
+ implementation 'com.google.android.gms:play-services-ads:23.6.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2ca7f617..53ea5df4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -30,6 +30,11 @@
+
+
+
@@ -64,7 +70,7 @@
+ android:windowSoftInputMode="adjustResize" />
diff --git a/app/src/main/java/com/daily/dayo/DayoApplication.kt b/app/src/main/java/com/daily/dayo/DayoApplication.kt
index 4f481181..af69ceb1 100644
--- a/app/src/main/java/com/daily/dayo/DayoApplication.kt
+++ b/app/src/main/java/com/daily/dayo/DayoApplication.kt
@@ -2,6 +2,7 @@ package com.daily.dayo
import android.app.Application
import com.bumptech.glide.Glide
+import com.google.android.gms.ads.MobileAds
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.ktx.Firebase
@@ -9,11 +10,12 @@ import com.kakao.sdk.common.KakaoSdk
import dagger.hilt.android.HiltAndroidApp
@HiltAndroidApp
-class DayoApplication : Application(){
+class DayoApplication : Application() {
private lateinit var firebaseAnalytics: FirebaseAnalytics
override fun onCreate() {
super.onCreate()
KakaoSdk.init(this, BuildConfig.NATIVE_APP_KEY)
+ MobileAds.initialize(this)
firebaseAnalytics = Firebase.analytics
}
diff --git a/build.gradle b/build.gradle
index 975b4f0e..a0e6994a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,6 +6,9 @@ buildscript {
compose_version = '1.4.6'
nav_version = '2.6.0'
paging_version = "3.2.0"
+ targetSdkVersion = 35
+ compileSdkVersion = 35
+ minSdkVersion = 26
}
repositories {
google()
diff --git a/data/build.gradle b/data/build.gradle
index a9eb90f0..e481800b 100644
--- a/data/build.gradle
+++ b/data/build.gradle
@@ -14,10 +14,10 @@ properties.load(project.rootProject.file('local.properties').newDataInputStream(
android {
namespace 'daily.dayo.data'
- compileSdk 33
+ compileSdk rootProject.ext.compileSdkVersion
defaultConfig {
- minSdk 26
+ minSdk rootProject.ext.minSdkVersion
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
@@ -32,11 +32,17 @@ android {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- buildConfigField("String", "BASE_URL", properties['BASE_URL_RELEASE'])
}
-
- debug {
- buildConfigField("String", "BASE_URL", properties['BASE_URL_DEBUG'])
+ }
+ flavorDimensions = ["environment"]
+ productFlavors {
+ dev {
+ dimension "environment"
+ buildConfigField("String", "BASE_URL", properties['BASE_URL_DEV'])
+ }
+ prod {
+ dimension "environment"
+ buildConfigField("String", "BASE_URL", properties['BASE_URL_PROD'])
}
}
compileOptions {
diff --git a/data/src/main/java/daily/dayo/data/datasource/local/SharedManager.kt b/data/src/main/java/daily/dayo/data/datasource/local/SharedManager.kt
index 5dde1817..cdb8959f 100644
--- a/data/src/main/java/daily/dayo/data/datasource/local/SharedManager.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/local/SharedManager.kt
@@ -2,11 +2,14 @@ package daily.dayo.data.datasource.local
import android.content.Context
import android.content.SharedPreferences
+import com.google.gson.Gson
import daily.dayo.data.util.PreferenceHelper
import daily.dayo.data.util.PreferenceHelper.get
import daily.dayo.data.util.PreferenceHelper.set
import com.google.gson.JsonArray
import dagger.hilt.android.qualifiers.ApplicationContext
+import daily.dayo.domain.model.SearchHistory
+import daily.dayo.domain.model.SearchHistoryDetail
import daily.dayo.domain.model.User
import daily.dayo.domain.model.UserTokens
import org.json.JSONArray
@@ -16,6 +19,7 @@ import javax.inject.Singleton
@Singleton
class SharedManager @Inject constructor(@ApplicationContext context: Context) {
private val prefs: SharedPreferences = PreferenceHelper.defaultPrefs(context)
+ private val KEY_SEARCH_HISTORY = "search_history"
fun saveCurrentUser(userInfo: Any?) = when (userInfo) {
is UserTokens -> {
@@ -58,31 +62,47 @@ class SharedManager @Inject constructor(@ApplicationContext context: Context) {
prefs["notiNoticePermit"] = value
}
- fun setSearchKeywordRecent(searchKeywordRecent: ArrayList) {
- val jsonArr = JsonArray()
- for (i in searchKeywordRecent) {
- jsonArr.add(i)
- }
+ fun saveSearchHistory(searchHistory: SearchHistory) {
+ val gson = Gson()
+ val json = gson.toJson(searchHistory)
+ val editor = prefs.edit()
+ editor.putString(KEY_SEARCH_HISTORY, json)
+ editor.apply()
+ }
- var result = jsonArr.toString()
- prefs["recentSearchKeyword"] = result
+ fun getSearchKeywordRecent(): SearchHistory {
+ val json = prefs.getString(KEY_SEARCH_HISTORY, null)
+ val gson = Gson()
+ return gson.fromJson(json, SearchHistory::class.java) ?: SearchHistory(0, mutableListOf())
}
- fun getSearchKeywordRecent(): ArrayList {
- val result = prefs["recentSearchKeyword", ""]
- val resultArr = ArrayList()
- val jsonArr: JSONArray = if (result.isEmpty()) {
- JSONArray()
- } else {
- JSONArray(result)
+ fun updateSearchHistory(newItem: SearchHistoryDetail) {
+ var searchHistory = getSearchKeywordRecent()
+ // History์ Type ๊ตฌ๋ถ์ ํ์ง ์์์ ๋ฐ๋ผ OR๋ฌธ์ผ๋ก ์ฒ๋ฆฌ
+ val existingItem = searchHistory.data.find {
+ it.history == newItem.history || it.searchHistoryType == newItem.searchHistoryType
}
- if (jsonArr.length() != 0) {
- for (i in 0 until jsonArr.length()) {
- resultArr.add(jsonArr.optString(i))
- }
+ if (existingItem != null) {
+ searchHistory = searchHistory.copy(
+ count = searchHistory.count - 1,
+ data = searchHistory.data.filter {
+ it.history != existingItem.history || it.searchHistoryType != existingItem.searchHistoryType
+ }.toMutableList()
+ )
}
- return resultArr
+
+ searchHistory = searchHistory.copy(
+ count = searchHistory.count + 1,
+ data = listOf(newItem) + searchHistory.data
+ )
+ saveSearchHistory(searchHistory)
+ }
+
+ fun clearSearchHistory() {
+ val editor = prefs.edit()
+ editor.remove(KEY_SEARCH_HISTORY)
+ editor.apply()
}
fun clearPreferences() {
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/alarm/AlarmApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/alarm/AlarmApiService.kt
index 228fb10e..5cfab0ba 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/alarm/AlarmApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/alarm/AlarmApiService.kt
@@ -12,5 +12,5 @@ interface AlarmApiService {
suspend fun requestAllAlarmList(@Query("end") end: Int): NetworkResponse
@POST("/api/v1/alarms/{alarmId}")
- suspend fun requestIsCheckAlarm(@Path("alarmId") alarmId: Int): NetworkResponse
+ suspend fun markAlarmAsChecked(@Path("alarmId") alarmId: Int): NetworkResponse
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/alarm/AlarmResponse.kt b/data/src/main/java/daily/dayo/data/datasource/remote/alarm/AlarmResponse.kt
index dbf68607..d66f2a56 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/alarm/AlarmResponse.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/alarm/AlarmResponse.kt
@@ -30,5 +30,7 @@ data class AlarmDto(
@SerializedName("memberId")
val memberId: String?,
@SerializedName("postId")
- val postId: Int?
+ val postId: Long?,
+ @SerializedName("profileImage")
+ val profileImage: String?,
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkApiService.kt
index 05ed70ad..f9a48729 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkApiService.kt
@@ -9,7 +9,7 @@ interface BookmarkApiService {
suspend fun requestBookmarkPost(@Body body: CreateBookmarkRequest): NetworkResponse
@POST("/api/v1/bookmark/delete/{postId}")
- suspend fun requestDeleteBookmarkPost(@Path("postId") postId: Int): NetworkResponse
+ suspend fun requestDeleteBookmarkPost(@Path("postId") postId: Long): NetworkResponse
@GET("/api/v1/bookmark/list")
suspend fun requestAllMyBookmarkPostList(@Query("end") end: Int): NetworkResponse
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkRequest.kt b/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkRequest.kt
index 552a8b6a..54f583dc 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkRequest.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkRequest.kt
@@ -4,5 +4,5 @@ import com.google.gson.annotations.SerializedName
data class CreateBookmarkRequest(
@SerializedName("postId")
- val postId: Int
+ val postId: Long
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkResponse.kt b/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkResponse.kt
index 2c773cca..ba597279 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkResponse.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/bookmark/BookmarkResponse.kt
@@ -6,7 +6,7 @@ data class CreateBookmarkResponse(
@SerializedName("memberId")
val memberId: String,
@SerializedName("postId")
- val postId: Int
+ val postId: Long
)
data class ListAllMyBookmarkPostResponse(
@@ -20,7 +20,7 @@ data class ListAllMyBookmarkPostResponse(
data class BookmarkPostDto(
@SerializedName("postId")
- val postId: Int,
+ val postId: Long,
@SerializedName("thumbnailImage")
val thumbnailImage: String
)
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentApiService.kt
index 1864c247..562756ed 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentApiService.kt
@@ -8,12 +8,17 @@ import retrofit2.http.Path
interface CommentApiService {
- @POST("/api/v1/comments")
+ /*** v2 ***/
+ @GET("/api/v2/comments/{postId}")
+ suspend fun requestPostComment(@Path("postId") postId: Long): NetworkResponse
+
+ @POST("/api/v2/comments")
suspend fun requestCreatePostComment(@Body body: CreateCommentRequest): NetworkResponse
- @GET("/api/v1/comments/{postId}")
- suspend fun requestPostComment(@Path("postId") postId: Int): NetworkResponse
+ @POST("/api/v2/comments/reply")
+ suspend fun requestCreatePostCommentReply(@Body body: CreateCommentReplyRequest): NetworkResponse
+ /*** v1 ***/
@POST("/api/v1/comments/delete/{commentId}")
- suspend fun requestDeletePostComment(@Path("commentId") commentId: Int): NetworkResponse
+ suspend fun requestDeletePostComment(@Path("commentId") commentId: Long): NetworkResponse
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentRequest.kt b/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentRequest.kt
index c2ba1b72..2ada924a 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentRequest.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentRequest.kt
@@ -6,5 +6,18 @@ data class CreateCommentRequest(
@SerializedName("contents")
val contents: String,
@SerializedName("postId")
- val postId: Int
+ val postId: Long,
+ @SerializedName("mentionList")
+ val mentionList: List
+)
+
+data class CreateCommentReplyRequest(
+ @SerializedName("commentId")
+ val commentId: Long,
+ @SerializedName("contents")
+ val contents: String,
+ @SerializedName("postId")
+ val postId: Long,
+ @SerializedName("mentionList")
+ val mentionList: List
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentResponse.kt b/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentResponse.kt
index 89d51e8d..9684a640 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentResponse.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/comment/CommentResponse.kt
@@ -16,15 +16,26 @@ data class ListAllCommentResponse(
data class CommentDto(
@SerializedName("commentId")
- val commentId: Int,
+ val commentId: Long,
+ @SerializedName("memberId")
+ val memberId: String,
+ @SerializedName("nickname")
+ val nickname: String,
+ @SerializedName("profileImg")
+ val profileImg: String,
@SerializedName("contents")
val contents: String,
@SerializedName("createTime")
val createTime: String,
+ @SerializedName("replyList")
+ val replyList: List,
+ @SerializedName("mentionList")
+ val mentionList: List
+)
+
+data class MentionUserDto(
@SerializedName("memberId")
val memberId: String,
@SerializedName("nickname")
- val nickname: String,
- @SerializedName("profileImg")
- val profileImg: String
+ val nickname: String
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderApiService.kt
index 31e24a9f..6d2f5b4c 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderApiService.kt
@@ -18,7 +18,7 @@ interface FolderApiService {
@Multipart
@POST("/api/v1/folders/patch")
suspend fun requestEditFolder(
- @Part("folderId") folderId: Int,
+ @Part("folderId") folderId: Long,
@Part("name") name: String,
@Part("privacy") privacy: String,
@Part("subheading") subheading: String?,
@@ -30,23 +30,27 @@ interface FolderApiService {
suspend fun requestCreateFolderInPost(@Body body: CreateFolderInPostRequest): NetworkResponse
@POST("/api/v1/folders/delete/{folderId}")
- suspend fun requestDeleteFolder(@Path("folderId") folderId: Int): NetworkResponse
+ suspend fun requestDeleteFolder(@Path("folderId") folderId: Long): NetworkResponse
- @POST("/api/v1/folders/order")
- suspend fun requestOrderFolder(@Body body: List): NetworkResponse
+ @POST("/api/v2/folders/move")
+ suspend fun requestFolderMove(@Body body: FolderMoveRequest): NetworkResponse
// ํด๋ ๋ฆฌ์คํธ
- @GET("/api/v1/folders/list/{memberId}")
+ @GET("/api/v2/folders/list/{memberId}")
suspend fun requestAllFolderList(@Path("memberId") memberId: String): NetworkResponse
- @GET("/api/v1/folders/my")
+ @GET("/api/v2/folders/my")
suspend fun requestAllMyFolderList(): NetworkResponse
// ํด๋ ์ ๋ณด
- @GET("/api/v1/folders/{folderId}/info")
- suspend fun requestFolderInfo(@Path("folderId") folderId: Int): NetworkResponse
+ @GET("/api/v2/folders/{folderId}/info")
+ suspend fun requestFolderInfo(@Path("folderId") folderId: Long): NetworkResponse
// ํด๋ ๋ด ๊ฒ์๊ธ
- @GET("/api/v1/folders/{folderId}")
- suspend fun requestDetailListFolder(@Path("folderId") folderId: Int, @Query("end") end: Int): NetworkResponse
+ @GET("/api/v2/folders/{folderId}")
+ suspend fun requestDetailListFolder(
+ @Path("folderId") folderId: Long,
+ @Query("end") end: Int,
+ @Query("order") order: String
+ ): NetworkResponse
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderPagingSource.kt b/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderPagingSource.kt
index 0670582a..ef192587 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderPagingSource.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderPagingSource.kt
@@ -3,20 +3,22 @@ package daily.dayo.data.datasource.remote.folder
import androidx.paging.PagingSource
import androidx.paging.PagingState
import daily.dayo.data.mapper.toFolderPost
+import daily.dayo.domain.model.FolderOrder
import daily.dayo.domain.model.FolderPost
import daily.dayo.domain.model.NetworkResponse
class FolderPagingSource(
private val apiService: FolderApiService,
private val size: Int,
- private val folderId: Int
+ private val folderId: Long,
+ private val folderOrder: FolderOrder
) : PagingSource() {
override suspend fun load(
params: LoadParams
): LoadResult {
val nextPageNumber = params.key ?: 0
- apiService.requestDetailListFolder(folderId = folderId, end = nextPageNumber).let { ApiResponse ->
+ apiService.requestDetailListFolder(folderId = folderId, end = nextPageNumber, order = folderOrder.toString()).let { ApiResponse ->
return try {
when (ApiResponse) {
is NetworkResponse.Success -> {
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderRequest.kt b/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderRequest.kt
index 08de26e1..b1a57ac1 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderRequest.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderRequest.kt
@@ -1,11 +1,20 @@
package daily.dayo.data.datasource.remote.folder
-import daily.dayo.domain.model.Privacy
import com.google.gson.annotations.SerializedName
+import daily.dayo.domain.model.Privacy
data class CreateFolderInPostRequest(
@SerializedName("name")
val name: String,
+ @SerializedName("subheading")
+ val subheading: String,
@SerializedName("privacy")
val privacy: Privacy
+)
+
+data class FolderMoveRequest(
+ @SerializedName("postIdList")
+ val postIdList: List,
+ @SerializedName("targetFolderId")
+ val targetFolderId: Long
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderResponse.kt b/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderResponse.kt
index e32e07cb..52667052 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderResponse.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/folder/FolderResponse.kt
@@ -5,7 +5,7 @@ import com.google.gson.annotations.SerializedName
data class CreateFolderResponse(
@SerializedName("folderId")
- val id: Int
+ val id: Long
)
data class ListAllFolderResponse(
@@ -48,17 +48,17 @@ data class DetailFolderResponse(
data class CreateFolderInPostResponse(
@SerializedName("folderId")
- val folderId: Int
+ val folderId: Long
)
data class EditFolderResponse(
@SerializedName("folderId")
- val folderId: Int
+ val folderId: Long
)
data class FolderDto(
@SerializedName("folderId")
- val folderId: Int,
+ val folderId: Long,
@SerializedName("name")
val name: String,
@SerializedName("postCount")
@@ -75,14 +75,14 @@ data class FolderPostDto(
@SerializedName("createDate")
val createDate: String,
@SerializedName("postId")
- val postId: Int,
+ val postId: Long,
@SerializedName("thumbnailImage")
val thumbnailImage: String
)
data class EditOrderDto(
@SerializedName("folderId")
- var folderId: Int,
+ var folderId: Long,
@SerializedName("orderIndex")
var orderIndex: Int
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartApiService.kt
index be20bcbd..e618e1a8 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartApiService.kt
@@ -9,11 +9,11 @@ interface HeartApiService {
suspend fun requestLikePost(@Body body: CreateHeartRequest): NetworkResponse
@POST("/api/v1/heart/delete/{postId}")
- suspend fun requestUnlikePost(@Path("postId") postId: Int): NetworkResponse
+ suspend fun requestUnlikePost(@Path("postId") postId: Long): NetworkResponse
@GET("/api/v1/heart/list")
suspend fun requestAllMyLikePostList(@Query("end") end: Int): NetworkResponse
@GET("/api/v1/heart/post/{postId}/list")
- suspend fun requestPostLikeUsers(@Path("postId") postId: Int, @Query("end") end: Int): NetworkResponse
+ suspend fun requestPostLikeUsers(@Path("postId") postId: Long, @Query("end") end: Int): NetworkResponse
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartPostUsersPagingSource.kt b/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartPostUsersPagingSource.kt
index d47dfe15..fce3c3af 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartPostUsersPagingSource.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartPostUsersPagingSource.kt
@@ -9,7 +9,7 @@ import daily.dayo.domain.model.NetworkResponse
class HeartPostUsersPagingSource(
private val apiService: HeartApiService,
private val size: Int,
- private val postId: Int
+ private val postId: Long
) : PagingSource() {
override suspend fun load(
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartRequest.kt b/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartRequest.kt
index d9010490..b8c43319 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartRequest.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartRequest.kt
@@ -4,5 +4,5 @@ import com.google.gson.annotations.SerializedName
data class CreateHeartRequest(
@SerializedName("postId")
- val postId: Int
+ val postId: Long
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartResponse.kt b/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartResponse.kt
index 8bdd7b26..b2653e15 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartResponse.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/heart/HeartResponse.kt
@@ -6,7 +6,7 @@ data class CreateHeartResponse(
@SerializedName("memberId")
val memberId: String,
@SerializedName("postId")
- val postId: Int,
+ val postId: Long,
@SerializedName("allCount")
val allCount: Int
)
@@ -27,7 +27,7 @@ data class ListAllMyHeartPostResponse(
data class MyHeartPostDto(
@SerializedName("postId")
- val postId: Int,
+ val postId: Long,
@SerializedName("thumbnailImage")
val thumbnailImage: String
)
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/member/MemberApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/member/MemberApiService.kt
index bc82488d..745ee12a 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/member/MemberApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/member/MemberApiService.kt
@@ -24,10 +24,10 @@ interface MemberApiService {
): NetworkResponse
@POST("/api/v1/members/kakaoOAuth")
- suspend fun requestLoginKakao(@Body body: MemberOAuthRequest): NetworkResponse
+ suspend fun requestSignInKakao(@Body body: MemberOAuthRequest): NetworkResponse
@POST("/api/v1/members/signIn")
- suspend fun requestLoginEmail(@Body body: MemberSignInRequest): NetworkResponse
+ suspend fun requestSignInEmail(@Body body: MemberSignInRequest): NetworkResponse
@GET("/api/v1/members/myInfo")
suspend fun requestMemberInfo(): NetworkResponse
@@ -56,6 +56,18 @@ interface MemberApiService {
@POST("/api/v1/members/resign")
suspend fun requestResign(@Query("content") content: String): NetworkResponse
+ @GET("/api/v2/members/delete-member/record/images/{guideFileName}")
+ suspend fun requestResignGuideRecordImage(@Path("guideFileName") guideFileName: String): NetworkResponse
+
+ @GET("/api/v2/members/delete-member/record/words")
+ suspend fun requestResignGuideRecordWords(): NetworkResponse>
+
+ @GET("/api/v2/members/delete-member/follow/images/{guideFileName}")
+ suspend fun requestResignGuideFollowImage(@Path("guideFileName") guideFileName: String): NetworkResponse
+
+ @GET("/api/v2/members/delete-member/follow/words")
+ suspend fun requestResignGuideFollowWords(): NetworkResponse>
+
@GET("/api/v1/members/receiveAlarm")
suspend fun requestReceiveAlarm(): NetworkResponse
@@ -63,11 +75,14 @@ interface MemberApiService {
suspend fun requestChangeReceiveAlarm(@Body body: ChangeReceiveAlarmRequest): NetworkResponse
@POST("/api/v1/members/logout")
- suspend fun requestLogout(): NetworkResponse
+ suspend fun requestSignOut(): NetworkResponse
@GET("/api/v1/members/search/{email}")
suspend fun requestCheckEmail(@Path("email") email: String): NetworkResponse
+ @GET("/api/v2/members/find-oauth-email/{email}")
+ suspend fun requestCheckOAuthEmail(@Path("email") email: String): NetworkResponse
+
@GET("/api/v1/members/search/code/{email}")
suspend fun requestCheckEmailAuth(@Path("email") email: String): NetworkResponse
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/notice/NoticeApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/notice/NoticeApiService.kt
index 69fe5743..eddc631e 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/notice/NoticeApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/notice/NoticeApiService.kt
@@ -11,5 +11,5 @@ interface NoticeApiService {
suspend fun requestAllNoticeList(@Query("end") end: Int): NetworkResponse
@GET("/api/v1/notice/{noticeId}")
- suspend fun requestDetailNotice(@Path("noticeId") noticeId: Int): NetworkResponse
+ suspend fun requestDetailNotice(@Path("noticeId") noticeId: Long): NetworkResponse
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/notice/NoticeResponse.kt b/data/src/main/java/daily/dayo/data/datasource/remote/notice/NoticeResponse.kt
index 72173ea5..3c52dfe4 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/notice/NoticeResponse.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/notice/NoticeResponse.kt
@@ -18,7 +18,7 @@ data class NoticeDetailResponse(
data class NoticeDto(
@SerializedName("id")
- val id: Int,
+ val id: Long,
@SerializedName("title")
val title: String,
@SerializedName("createdDate")
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/post/FeedPagingSource.kt b/data/src/main/java/daily/dayo/data/datasource/remote/post/FeedPagingSource.kt
index fa7520e4..163663d7 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/post/FeedPagingSource.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/post/FeedPagingSource.kt
@@ -3,10 +3,12 @@ package daily.dayo.data.datasource.remote.post
import androidx.paging.PagingSource
import androidx.paging.PagingState
import daily.dayo.data.mapper.toPost
+import daily.dayo.domain.model.Category
import daily.dayo.domain.model.NetworkResponse
import daily.dayo.domain.model.Post
class FeedPagingSource(
+ private val category: Category,
private val apiService: PostApiService,
private val size: Int
) : PagingSource() {
@@ -15,16 +17,21 @@ class FeedPagingSource(
params: LoadParams
): LoadResult {
val nextPageNumber = params.key ?: 0
- apiService.requestFeedList(end = nextPageNumber).let { ApiResponse ->
+ if (category == Category.ALL) {
+ apiService.requestAllFeedList(end = nextPageNumber)
+ } else {
+ apiService.requestFeedListByCategory(category = category, end = nextPageNumber)
+ }.let { response ->
return try {
- when (ApiResponse) {
+ when (response) {
is NetworkResponse.Success -> {
return LoadResult.Page(
- data = ApiResponse.body!!.data.map { it.toPost() },
+ data = response.body?.data?.map { it.toPost() } ?: emptyList(),
prevKey = if (nextPageNumber == 0) null else nextPageNumber - size,
- nextKey = if (ApiResponse.body!!.last || ApiResponse.body!!.count == 0) null else nextPageNumber + size
+ nextKey = if (response.body?.last != false || response.body?.count == 0) null else nextPageNumber + size
)
}
+
else -> {
throw Exception("LoadResult Error")
}
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/post/PostApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/post/PostApiService.kt
index edb7a243..fab6bd10 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/post/PostApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/post/PostApiService.kt
@@ -1,10 +1,15 @@
package daily.dayo.data.datasource.remote.post
-import daily.dayo.data.datasource.remote.heart.DeleteHeartResponse
import daily.dayo.domain.model.Category
import daily.dayo.domain.model.NetworkResponse
import okhttp3.MultipartBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.GET
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Path
+import retrofit2.http.Query
interface PostApiService {
@@ -14,13 +19,13 @@ interface PostApiService {
@Part("category") category: String,
@Part("contents") contents: String,
@Part files: List,
- @Part("folderId") folderId: Int,
+ @Part("folderId") folderId: Long,
@Part("tags") tags: Array
): NetworkResponse
@POST("/api/v1/posts/{postId}/edit")
suspend fun requestEditPost(
- @Path("postId") postId: Int,
+ @Path("postId") postId: Long,
@Body body: EditPostRequest
): NetworkResponse
@@ -37,11 +42,17 @@ interface PostApiService {
suspend fun requestDayoPickPostListCategory(@Path("category") category: Category): NetworkResponse
@GET("/api/v1/posts/{postId}")
- suspend fun requestPostDetail(@Path("postId") postId: Int): NetworkResponse
+ suspend fun requestPostDetail(@Path("postId") postId: Long): NetworkResponse
@POST("/api/v1/posts/delete/{postId}")
- suspend fun requestDeletePost(@Path("postId") postId: Int): NetworkResponse
+ suspend fun requestDeletePost(@Path("postId") postId: Long): NetworkResponse
@GET("/api/v1/posts/feed/list")
- suspend fun requestFeedList(@Query("end") end: Int): NetworkResponse
+ suspend fun requestAllFeedList(@Query("end") end: Int): NetworkResponse
+
+ @GET("/api/v1/posts/feed/{category}")
+ suspend fun requestFeedListByCategory(
+ @Path("category") category: Category,
+ @Query("end") end: Int
+ ): NetworkResponse
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/post/PostRequest.kt b/data/src/main/java/daily/dayo/data/datasource/remote/post/PostRequest.kt
index af4ac497..1aa9000b 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/post/PostRequest.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/post/PostRequest.kt
@@ -9,7 +9,7 @@ data class EditPostRequest (
@SerializedName("contents")
val contents : String,
@SerializedName("folderId")
- val folderId : Int,
+ val folderId : Long,
@SerializedName("hashtags")
val hashtags : List
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/post/PostResponse.kt b/data/src/main/java/daily/dayo/data/datasource/remote/post/PostResponse.kt
index ae3e2fdd..58491e14 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/post/PostResponse.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/post/PostResponse.kt
@@ -1,7 +1,7 @@
package daily.dayo.data.datasource.remote.post
-import daily.dayo.domain.model.Category
import com.google.gson.annotations.SerializedName
+import daily.dayo.domain.model.Category
data class ListFeedResponse(
@SerializedName("count")
@@ -14,12 +14,12 @@ data class ListFeedResponse(
data class EditPostResponse(
@SerializedName("postId")
- val postId: Int
+ val postId: Long
)
data class CreatePostResponse(
@SerializedName("id")
- val id: Int
+ val id: Long
)
data class ListAllPostResponse(
@@ -53,7 +53,7 @@ data class DetailPostResponse(
@SerializedName("createDateTime")
val createDateTime: String,
@SerializedName("folderId")
- val folderId: Int,
+ val folderId: Long,
@SerializedName("folderName")
val folderName: String,
@SerializedName("hashtags")
@@ -80,7 +80,7 @@ data class PostDto(
@SerializedName("heartCount")
val heartCount: Int,
@SerializedName("id")
- val postId: Int,
+ val postId: Long,
@SerializedName("memberId")
val memberId: String,
@SerializedName("nickname")
@@ -99,7 +99,7 @@ data class DayoPick(
@SerializedName("heartCount")
val heartCount: Int,
@SerializedName("id")
- val postId: Int,
+ val postId: Long,
@SerializedName("memberId")
val memberId: String,
@SerializedName("nickname")
@@ -128,7 +128,7 @@ data class FeedDto(
@SerializedName("heartCount")
val heartCount: Int,
@SerializedName("id")
- val postId: Int,
+ val postId: Long,
@SerializedName("memberId")
val memberId: String,
@SerializedName("nickname")
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/report/ReportApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/report/ReportApiService.kt
index 4d4e4cdc..664eaba2 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/report/ReportApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/report/ReportApiService.kt
@@ -11,4 +11,8 @@ interface ReportApiService {
@POST("/api/v1/reports/post")
suspend fun requestSavePostReport(@Body body: CreateReportPostRequest): NetworkResponse
+
+ @POST("/api/v2/reports/comment")
+ suspend fun requestSaveCommentReport(@Body body: CreateReportCommentRequest): NetworkResponse
+
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/report/ReportRequest.kt b/data/src/main/java/daily/dayo/data/datasource/remote/report/ReportRequest.kt
index 5c12bd68..c747a6d8 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/report/ReportRequest.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/report/ReportRequest.kt
@@ -13,5 +13,12 @@ data class CreateReportPostRequest(
@SerializedName("comment")
val comment: String,
@SerializedName("postId")
- val postId: Int
+ val postId: Long
+)
+
+data class CreateReportCommentRequest(
+ @SerializedName("comment")
+ val comment: String,
+ @SerializedName("commentId")
+ val commentId: Long
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchApiService.kt b/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchApiService.kt
index 07f68429..0b6ca61e 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchApiService.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchApiService.kt
@@ -7,5 +7,20 @@ import retrofit2.http.Query
interface SearchApiService {
@GET("/api/v1/search")
- suspend fun requestSearchTag(@Query("tag") tag: String, @Query("end") end: Int): NetworkResponse
+ suspend fun requestSearchTag(
+ @Query("tag") tag: String,
+ @Query("end") end: Int
+ ): NetworkResponse
+
+ @GET("/api/v1/search/member")
+ suspend fun requestSearchUser(
+ @Query("nickname") nickname: String,
+ @Query("end") end: Int
+ ): NetworkResponse
+
+ @GET("/api/v1/search/comment/member")
+ suspend fun requestSearchFollowUser(
+ @Query("nickname") nickname: String,
+ @Query("end") end: Int
+ ): NetworkResponse
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchFollowUserPagingSource.kt b/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchFollowUserPagingSource.kt
new file mode 100644
index 00000000..6f5c89c9
--- /dev/null
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchFollowUserPagingSource.kt
@@ -0,0 +1,47 @@
+package daily.dayo.data.datasource.remote.search
+
+import androidx.paging.PagingSource
+import androidx.paging.PagingState
+import daily.dayo.data.mapper.toSearchUser
+import daily.dayo.domain.model.NetworkResponse
+import daily.dayo.domain.model.SearchUser
+
+class SearchFollowUserPagingSource(
+ private val apiService: SearchApiService,
+ private val size: Int,
+ private val nickname: String
+) : PagingSource() {
+
+ override suspend fun load(
+ params: LoadParams
+ ): LoadResult {
+ val nextPageNumber = params.key ?: 0
+ apiService.requestSearchFollowUser(nickname = nickname, end = nextPageNumber)
+ .let { ApiResponse ->
+ return try {
+ when (ApiResponse) {
+ is NetworkResponse.Success -> {
+ return LoadResult.Page(
+ data = ApiResponse.body!!.data.map { it.toSearchUser() },
+ prevKey = if (nextPageNumber == 0) null else nextPageNumber - size,
+ nextKey = if (ApiResponse.body!!.last || ApiResponse.body!!.count == 0) null else nextPageNumber + size
+ )
+ }
+
+ else -> {
+ throw Exception("LoadResult Error")
+ }
+ }
+ } catch (e: Exception) {
+ LoadResult.Error(e)
+ }
+ }
+ }
+
+ override fun getRefreshKey(state: PagingState): Int? {
+ return state.anchorPosition?.let { anchorPosition ->
+ val anchorPage = state.closestPageToPosition(anchorPosition)
+ anchorPage?.prevKey?.plus(size) ?: anchorPage?.nextKey?.minus(size)
+ }
+ }
+}
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchResponse.kt b/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchResponse.kt
index 2c4913fc..a219f5de 100644
--- a/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchResponse.kt
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchResponse.kt
@@ -15,7 +15,29 @@ data class SearchResultResponse(
data class SearchDto(
@SerializedName("postId")
- val postId: Int,
+ val postId: Long,
@SerializedName("thumbnailImage")
val thumbnailImage: String,
)
+
+data class SearchUserResponse(
+ @SerializedName("allCount")
+ val totalCount: Int,
+ @SerializedName("count")
+ val count: Int,
+ @SerializedName("last")
+ val last: Boolean,
+ @SerializedName("data")
+ val data: List,
+)
+
+data class SearchUserDto(
+ @SerializedName("memberId")
+ val memberId: String,
+ @SerializedName("nickname")
+ val nickname: String,
+ @SerializedName("profileImg")
+ val profileImg: String,
+ @SerializedName("isFollow")
+ val isFollow: Boolean,
+)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchUserPagingSource.kt b/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchUserPagingSource.kt
new file mode 100644
index 00000000..0d273c69
--- /dev/null
+++ b/data/src/main/java/daily/dayo/data/datasource/remote/search/SearchUserPagingSource.kt
@@ -0,0 +1,47 @@
+package daily.dayo.data.datasource.remote.search
+
+import androidx.paging.PagingSource
+import androidx.paging.PagingState
+import daily.dayo.data.mapper.toSearchUser
+import daily.dayo.domain.model.NetworkResponse
+import daily.dayo.domain.model.SearchUser
+
+class SearchUserPagingSource(
+ private val apiService: SearchApiService,
+ private val size: Int,
+ private val nickname: String
+) : PagingSource() {
+
+ override suspend fun load(
+ params: LoadParams
+ ): LoadResult {
+ val nextPageNumber = params.key ?: 0
+ apiService.requestSearchUser(nickname = nickname, end = nextPageNumber)
+ .let { ApiResponse ->
+ return try {
+ when (ApiResponse) {
+ is NetworkResponse.Success -> {
+ return LoadResult.Page(
+ data = ApiResponse.body!!.data.map { it.toSearchUser() },
+ prevKey = if (nextPageNumber == 0) null else nextPageNumber - size,
+ nextKey = if (ApiResponse.body!!.last || ApiResponse.body!!.count == 0) null else nextPageNumber + size
+ )
+ }
+
+ else -> {
+ throw Exception("LoadResult Error")
+ }
+ }
+ } catch (e: Exception) {
+ LoadResult.Error(e)
+ }
+ }
+ }
+
+ override fun getRefreshKey(state: PagingState): Int? {
+ return state.anchorPosition?.let { anchorPosition ->
+ val anchorPage = state.closestPageToPosition(anchorPosition)
+ anchorPage?.prevKey?.plus(size) ?: anchorPage?.nextKey?.minus(size)
+ }
+ }
+}
diff --git a/data/src/main/java/daily/dayo/data/mapper/AlarmMapper.kt b/data/src/main/java/daily/dayo/data/mapper/AlarmMapper.kt
index c812d39b..424a3541 100644
--- a/data/src/main/java/daily/dayo/data/mapper/AlarmMapper.kt
+++ b/data/src/main/java/daily/dayo/data/mapper/AlarmMapper.kt
@@ -13,6 +13,7 @@ fun AlarmDto.toNotification(): Notification {
image = image,
nickname = nickname,
memberId = memberId,
- postId = postId
+ postId = postId,
+ profileImage = profileImage,
)
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/mapper/CommentMapper.kt b/data/src/main/java/daily/dayo/data/mapper/CommentMapper.kt
index b9857576..528ec5ca 100644
--- a/data/src/main/java/daily/dayo/data/mapper/CommentMapper.kt
+++ b/data/src/main/java/daily/dayo/data/mapper/CommentMapper.kt
@@ -2,16 +2,20 @@ package daily.dayo.data.mapper
import daily.dayo.data.datasource.remote.comment.CommentDto
import daily.dayo.data.datasource.remote.comment.ListAllCommentResponse
+import daily.dayo.data.datasource.remote.comment.MentionUserDto
import daily.dayo.domain.model.Comment
import daily.dayo.domain.model.Comments
+import daily.dayo.domain.model.MentionUser
fun CommentDto.toComment(): Comment = Comment(
commentId = commentId,
- contents = contents,
- createTime = createTime,
memberId = memberId,
nickname = nickname,
- profileImg = profileImg
+ profileImg = profileImg,
+ contents = contents,
+ createTime = createTime,
+ replyList = replyList.map { it.toComment() },
+ mentionList = mentionList.map { it.toMentionUser() },
)
fun ListAllCommentResponse.toComments(): Comments {
@@ -19,4 +23,11 @@ fun ListAllCommentResponse.toComments(): Comments {
count = count,
data = data.map { it.toComment() }
)
+}
+
+fun MentionUserDto.toMentionUser(): MentionUser {
+ return MentionUser(
+ memberId = memberId,
+ nickname = nickname
+ )
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/mapper/FolderMapper.kt b/data/src/main/java/daily/dayo/data/mapper/FolderMapper.kt
index 7332f71c..fc9217c9 100644
--- a/data/src/main/java/daily/dayo/data/mapper/FolderMapper.kt
+++ b/data/src/main/java/daily/dayo/data/mapper/FolderMapper.kt
@@ -34,7 +34,7 @@ fun FolderInfoResponse.toFolderInfo(): FolderInfo =
name = name,
postCount = postCount,
privacy = privacy,
- subheading = subheading,
+ subheading = subheading ?: "",
thumbnailImage = thumbnailImage
)
@@ -81,16 +81,4 @@ fun FolderPostDto.toFolderPost(): FolderPost =
createDate = createDate,
postId = postId,
thumbnailImage = thumbnailImage
- )
-
-fun FolderOrder.toEditOrderDto(): EditOrderDto =
- EditOrderDto(
- folderId = folderId,
- orderIndex = orderIndex
- )
-
-fun EditOrderDto.toFolderOrder(): FolderOrder =
- FolderOrder(
- folderId = folderId,
- orderIndex = orderIndex
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/mapper/FollowMapper.kt b/data/src/main/java/daily/dayo/data/mapper/FollowMapper.kt
index 014d6eb7..37ebba16 100644
--- a/data/src/main/java/daily/dayo/data/mapper/FollowMapper.kt
+++ b/data/src/main/java/daily/dayo/data/mapper/FollowMapper.kt
@@ -5,11 +5,11 @@ import daily.dayo.data.datasource.remote.follow.CreateFollowUpResponse
import daily.dayo.data.datasource.remote.follow.ListAllFollowerResponse
import daily.dayo.data.datasource.remote.follow.ListAllFollowingResponse
import daily.dayo.data.datasource.remote.follow.MyFollowerDto
+import daily.dayo.domain.model.Follow
import daily.dayo.domain.model.FollowCreateResponse
import daily.dayo.domain.model.FollowUpCreateResponse
-import daily.dayo.domain.model.Followers
-import daily.dayo.domain.model.Followings
-import daily.dayo.domain.model.MyFollower
+import daily.dayo.domain.model.Follower
+import daily.dayo.domain.model.Following
fun CreateFollowResponse.toFollowCreateResponse(): FollowCreateResponse =
FollowCreateResponse(followerId = followerId, isAccept = isAccept, memberId = memberId)
@@ -17,14 +17,14 @@ fun CreateFollowResponse.toFollowCreateResponse(): FollowCreateResponse =
fun CreateFollowUpResponse.toFollowUpCreateResponse(): FollowUpCreateResponse =
FollowUpCreateResponse(followId = followId, isAccept = isAccept, memberId = memberId)
-fun ListAllFollowingResponse.toFollowings(): Followings =
- Followings(count = count, data = data.map { it.toMyFollower() })
+fun ListAllFollowingResponse.toFollowings(): Following =
+ Following(count = count, data = data.map { it.toMyFollower() })
-fun ListAllFollowerResponse.toFollowers(): Followers =
- Followers(count = count, data = data.map { it.toMyFollower() })
+fun ListAllFollowerResponse.toFollowers(): Follower =
+ Follower(count = count, data = data.map { it.toMyFollower() })
-fun MyFollowerDto.toMyFollower(): MyFollower =
- MyFollower(
+fun MyFollowerDto.toMyFollower(): Follow =
+ Follow(
isFollow = isFollow,
memberId = memberId,
nickname = nickname,
diff --git a/data/src/main/java/daily/dayo/data/mapper/HeartMapper.kt b/data/src/main/java/daily/dayo/data/mapper/HeartMapper.kt
index 20fe3aeb..2cab2aab 100644
--- a/data/src/main/java/daily/dayo/data/mapper/HeartMapper.kt
+++ b/data/src/main/java/daily/dayo/data/mapper/HeartMapper.kt
@@ -5,15 +5,14 @@ import daily.dayo.data.datasource.remote.heart.DeleteHeartResponse
import daily.dayo.data.datasource.remote.heart.HeartMemberDto
import daily.dayo.data.datasource.remote.heart.MyHeartPostDto
import daily.dayo.domain.model.LikePost
-import daily.dayo.domain.model.LikePostDeleteResponse
import daily.dayo.domain.model.LikePostResponse
import daily.dayo.domain.model.LikeUser
fun CreateHeartResponse.toLikePostResponse(): LikePostResponse =
- LikePostResponse(memberId = memberId, postId = postId, allCount = allCount)
+ LikePostResponse(allCount = allCount)
-fun DeleteHeartResponse.toLikePostDeleteResponse(): LikePostDeleteResponse =
- LikePostDeleteResponse(allCount = allCount)
+fun DeleteHeartResponse.toLikePostDeleteResponse(): LikePostResponse =
+ LikePostResponse(allCount = allCount)
fun MyHeartPostDto.toLikePost(): LikePost =
LikePost(
diff --git a/data/src/main/java/daily/dayo/data/mapper/SearchMapper.kt b/data/src/main/java/daily/dayo/data/mapper/SearchMapper.kt
index 25556ed3..248192ea 100644
--- a/data/src/main/java/daily/dayo/data/mapper/SearchMapper.kt
+++ b/data/src/main/java/daily/dayo/data/mapper/SearchMapper.kt
@@ -1,10 +1,19 @@
package daily.dayo.data.mapper
import daily.dayo.data.datasource.remote.search.SearchDto
+import daily.dayo.data.datasource.remote.search.SearchUserDto
import daily.dayo.domain.model.Search
+import daily.dayo.domain.model.SearchUser
fun SearchDto.toSearch() : Search =
Search(
postId = postId,
thumbnailImage = thumbnailImage
+ )
+fun SearchUserDto.toSearchUser() : SearchUser =
+ SearchUser(
+ memberId = memberId,
+ profileImg = profileImg,
+ nickname = nickname,
+ isFollow = isFollow
)
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/repository/AlarmRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/AlarmRepositoryImpl.kt
index df09ba31..2899904a 100644
--- a/data/src/main/java/daily/dayo/data/repository/AlarmRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/AlarmRepositoryImpl.kt
@@ -17,8 +17,8 @@ class AlarmRepositoryImpl @Inject constructor(
AlarmPagingSource(alarmApiService, ALARM_PAGE_SIZE)
}.flow
- override suspend fun requestIsCheckAlarm(alarmId: Int): NetworkResponse =
- alarmApiService.requestIsCheckAlarm(alarmId)
+ override suspend fun markAlarmAsChecked(alarmId: Int): NetworkResponse =
+ alarmApiService.markAlarmAsChecked(alarmId)
companion object {
private const val ALARM_PAGE_SIZE = 10
diff --git a/data/src/main/java/daily/dayo/data/repository/BookmarkRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/BookmarkRepositoryImpl.kt
index a1e03375..dfd03f16 100644
--- a/data/src/main/java/daily/dayo/data/repository/BookmarkRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/BookmarkRepositoryImpl.kt
@@ -14,7 +14,7 @@ import javax.inject.Inject
class BookmarkRepositoryImpl @Inject constructor(
private val bookmarkApiService: BookmarkApiService
) : BookmarkRepository {
- override suspend fun requestBookmarkPost(postId: Int): NetworkResponse {
+ override suspend fun requestBookmarkPost(postId: Long): NetworkResponse {
return when (val response = bookmarkApiService.requestBookmarkPost(CreateBookmarkRequest(postId = postId))) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toBookmarkPostResponse)
is NetworkResponse.NetworkError -> response
@@ -23,7 +23,7 @@ class BookmarkRepositoryImpl @Inject constructor(
}
}
- override suspend fun requestDeleteBookmarkPost(postId: Int): NetworkResponse =
+ override suspend fun requestDeleteBookmarkPost(postId: Long): NetworkResponse =
bookmarkApiService.requestDeleteBookmarkPost(postId)
override suspend fun requestAllMyBookmarkPostList() =
@@ -31,7 +31,15 @@ class BookmarkRepositoryImpl @Inject constructor(
BookmarkPagingSource(bookmarkApiService, BOOKMARK_PAGE_SIZE)
}.flow
+ override suspend fun requestBookmarkCount(): Int {
+ return when (val response = bookmarkApiService.requestAllMyBookmarkPostList(INIT_PAGE)) {
+ is NetworkResponse.Success -> response.body?.count ?: 0
+ else -> 0
+ }
+ }
+
companion object {
private const val BOOKMARK_PAGE_SIZE = 10
+ private const val INIT_PAGE = 0
}
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/repository/CommentRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/CommentRepositoryImpl.kt
index 433aeaab..69ffc834 100644
--- a/data/src/main/java/daily/dayo/data/repository/CommentRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/CommentRepositoryImpl.kt
@@ -1,9 +1,12 @@
package daily.dayo.data.repository
import daily.dayo.data.datasource.remote.comment.CommentApiService
+import daily.dayo.data.datasource.remote.comment.CreateCommentReplyRequest
import daily.dayo.data.datasource.remote.comment.CreateCommentRequest
+import daily.dayo.data.datasource.remote.comment.MentionUserDto
import daily.dayo.data.mapper.toComments
import daily.dayo.domain.model.Comments
+import daily.dayo.domain.model.MentionUser
import daily.dayo.domain.model.NetworkResponse
import daily.dayo.domain.repository.CommentRepository
import javax.inject.Inject
@@ -12,7 +15,7 @@ class CommentRepositoryImpl @Inject constructor(
private val commentApiService: CommentApiService
) : CommentRepository {
- override suspend fun requestPostComment(postId: Int): NetworkResponse =
+ override suspend fun requestPostComment(postId: Long): NetworkResponse =
when (val response =
commentApiService.requestPostComment(postId)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toComments())
@@ -23,11 +26,18 @@ class CommentRepositoryImpl @Inject constructor(
override suspend fun requestCreatePostComment(
contents: String,
- postId: Int
+ postId: Long,
+ mentionList: List
): NetworkResponse =
when (val response =
commentApiService.requestCreatePostComment(
- CreateCommentRequest(contents = contents, postId = postId)
+ CreateCommentRequest(
+ contents = contents,
+ postId = postId,
+ mentionList = mentionList.map {
+ MentionUserDto(memberId = it.memberId, nickname = it.nickname)
+ }
+ )
)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.commentId)
is NetworkResponse.NetworkError -> response
@@ -35,6 +45,29 @@ class CommentRepositoryImpl @Inject constructor(
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestDeletePostComment(commentId: Int): NetworkResponse =
+ override suspend fun requestCreatePostCommentReply(
+ commentId: Long,
+ contents: String,
+ postId: Long,
+ mentionList: List
+ ): NetworkResponse =
+ when (val response =
+ commentApiService.requestCreatePostCommentReply(
+ CreateCommentReplyRequest(
+ commentId = commentId,
+ contents = contents,
+ postId = postId,
+ mentionList = mentionList.map {
+ MentionUserDto(memberId = it.memberId, nickname = it.nickname)
+ }
+ )
+ )) {
+ is NetworkResponse.Success -> NetworkResponse.Success(response.body?.commentId)
+ is NetworkResponse.NetworkError -> response
+ is NetworkResponse.ApiError -> response
+ is NetworkResponse.UnknownError -> response
+ }
+
+ override suspend fun requestDeletePostComment(commentId: Long): NetworkResponse =
commentApiService.requestDeletePostComment(commentId)
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/repository/FolderRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/FolderRepositoryImpl.kt
index 819788f4..6cdb639d 100644
--- a/data/src/main/java/daily/dayo/data/repository/FolderRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/FolderRepositoryImpl.kt
@@ -3,7 +3,6 @@ package daily.dayo.data.repository
import androidx.paging.Pager
import androidx.paging.PagingConfig
import daily.dayo.data.datasource.remote.folder.*
-import daily.dayo.data.mapper.toEditOrderDto
import daily.dayo.data.mapper.toFolderCreateInPostResponse
import daily.dayo.data.mapper.toFolderCreateResponse
import daily.dayo.data.mapper.toFolderEditResponse
@@ -42,7 +41,7 @@ class FolderRepositoryImpl @Inject constructor(
}
override suspend fun requestEditFolder(
- folderId: Int,
+ folderId: Long,
name: String,
privacy: Privacy,
subheading: String?,
@@ -63,20 +62,30 @@ class FolderRepositoryImpl @Inject constructor(
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestCreateFolderInPost(name: String, privacy: Privacy): NetworkResponse =
+ override suspend fun requestCreateFolderInPost(
+ name: String,
+ description: String,
+ privacy: Privacy
+ ): NetworkResponse =
when (val response =
- folderApiService.requestCreateFolderInPost(CreateFolderInPostRequest(name = name, privacy = privacy))) {
+ folderApiService.requestCreateFolderInPost(
+ CreateFolderInPostRequest(
+ name = name,
+ subheading = description,
+ privacy = privacy
+ )
+ )) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toFolderCreateInPostResponse())
is NetworkResponse.NetworkError -> response
is NetworkResponse.ApiError -> response
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestDeleteFolder(folderId: Int): NetworkResponse =
+ override suspend fun requestDeleteFolder(folderId: Long): NetworkResponse =
folderApiService.requestDeleteFolder(folderId)
- override suspend fun requestOrderFolder(folderOrders: List): NetworkResponse =
- folderApiService.requestOrderFolder(folderOrders.map { it.toEditOrderDto() })
+ override suspend fun requestFolderMove(postIdList: List, targetFolderId: Long): NetworkResponse =
+ folderApiService.requestFolderMove(FolderMoveRequest(postIdList, targetFolderId))
override suspend fun requestAllFolderList(memberId: String): NetworkResponse =
when (val response = folderApiService.requestAllFolderList(memberId)) {
@@ -94,7 +103,7 @@ class FolderRepositoryImpl @Inject constructor(
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestFolderInfo(folderId: Int): NetworkResponse =
+ override suspend fun requestFolderInfo(folderId: Long): NetworkResponse =
when (val response = folderApiService.requestFolderInfo(folderId)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toFolderInfo())
is NetworkResponse.NetworkError -> response
@@ -102,9 +111,9 @@ class FolderRepositoryImpl @Inject constructor(
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestDetailListFolder(folderId: Int) =
+ override suspend fun requestDetailListFolder(folderId: Long, folderOrder: FolderOrder) =
Pager(PagingConfig(pageSize = FOLDER_POST_PAGE_SIZE)) {
- FolderPagingSource(folderApiService, FOLDER_POST_PAGE_SIZE, folderId)
+ FolderPagingSource(folderApiService, FOLDER_POST_PAGE_SIZE, folderId, folderOrder)
}.flow
companion object {
diff --git a/data/src/main/java/daily/dayo/data/repository/FollowRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/FollowRepositoryImpl.kt
index e8c12fb5..15fd5abe 100644
--- a/data/src/main/java/daily/dayo/data/repository/FollowRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/FollowRepositoryImpl.kt
@@ -1,14 +1,16 @@
package daily.dayo.data.repository
-import daily.dayo.data.datasource.remote.follow.*
+import daily.dayo.data.datasource.remote.follow.CreateFollowRequest
+import daily.dayo.data.datasource.remote.follow.CreateFollowUpRequest
+import daily.dayo.data.datasource.remote.follow.FollowApiService
import daily.dayo.data.mapper.toFollowCreateResponse
import daily.dayo.data.mapper.toFollowUpCreateResponse
import daily.dayo.data.mapper.toFollowers
import daily.dayo.data.mapper.toFollowings
import daily.dayo.domain.model.FollowCreateResponse
import daily.dayo.domain.model.FollowUpCreateResponse
-import daily.dayo.domain.model.Followers
-import daily.dayo.domain.model.Followings
+import daily.dayo.domain.model.Follower
+import daily.dayo.domain.model.Following
import daily.dayo.domain.model.NetworkResponse
import daily.dayo.domain.repository.FollowRepository
import javax.inject.Inject
@@ -18,17 +20,17 @@ class FollowRepositoryImpl @Inject constructor(
) : FollowRepository {
override suspend fun requestCreateFollow(followerId: String): NetworkResponse =
- when (val response = followApiService.requestCreateFollow(CreateFollowRequest(followerId = followerId))) {
- is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toFollowCreateResponse())
- is NetworkResponse.NetworkError -> response
- is NetworkResponse.ApiError -> response
- is NetworkResponse.UnknownError -> response
- }
+ when (val response = followApiService.requestCreateFollow(CreateFollowRequest(followerId = followerId))) {
+ is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toFollowCreateResponse())
+ is NetworkResponse.NetworkError -> response
+ is NetworkResponse.ApiError -> response
+ is NetworkResponse.UnknownError -> response
+ }
override suspend fun requestDeleteFollow(followerId: String): NetworkResponse =
followApiService.requestDeleteFollow(followerId)
- override suspend fun requestListAllFollower(memberId: String): NetworkResponse =
+ override suspend fun requestListAllFollower(memberId: String): NetworkResponse =
when (val response = followApiService.requestListAllFollower(memberId)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toFollowers())
is NetworkResponse.NetworkError -> response
@@ -36,7 +38,7 @@ class FollowRepositoryImpl @Inject constructor(
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestListAllFollowing(memberId: String): NetworkResponse =
+ override suspend fun requestListAllFollowing(memberId: String): NetworkResponse =
when (val response = followApiService.requestListAllFollowing(memberId)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toFollowings())
is NetworkResponse.NetworkError -> response
diff --git a/data/src/main/java/daily/dayo/data/repository/HeartRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/HeartRepositoryImpl.kt
index 0d677c7d..ad870fff 100644
--- a/data/src/main/java/daily/dayo/data/repository/HeartRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/HeartRepositoryImpl.kt
@@ -8,7 +8,6 @@ import daily.dayo.data.datasource.remote.heart.HeartPagingSource
import daily.dayo.data.datasource.remote.heart.HeartPostUsersPagingSource
import daily.dayo.data.mapper.toLikePostDeleteResponse
import daily.dayo.data.mapper.toLikePostResponse
-import daily.dayo.domain.model.LikePostDeleteResponse
import daily.dayo.domain.model.LikePostResponse
import daily.dayo.domain.model.NetworkResponse
import daily.dayo.domain.repository.HeartRepository
@@ -18,7 +17,7 @@ class HeartRepositoryImpl @Inject constructor(
private val heartApiService: HeartApiService
) : HeartRepository {
- override suspend fun requestLikePost(postId: Int): NetworkResponse =
+ override suspend fun requestLikePost(postId: Long): NetworkResponse =
when (val response = heartApiService.requestLikePost(CreateHeartRequest(postId))) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toLikePostResponse())
is NetworkResponse.NetworkError -> response
@@ -26,7 +25,7 @@ class HeartRepositoryImpl @Inject constructor(
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestUnlikePost(postId: Int): NetworkResponse =
+ override suspend fun requestUnlikePost(postId: Long): NetworkResponse =
when (val response = heartApiService.requestUnlikePost(postId)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toLikePostDeleteResponse())
is NetworkResponse.NetworkError -> response
@@ -38,7 +37,7 @@ class HeartRepositoryImpl @Inject constructor(
HeartPagingSource(heartApiService, HEART_PAGE_SIZE)
}.flow
- override suspend fun requestPostLikeUsers(postId: Int) = Pager(PagingConfig(pageSize = HEART_PAGE_SIZE)) {
+ override suspend fun requestPostLikeUsers(postId: Long) = Pager(PagingConfig(pageSize = HEART_PAGE_SIZE)) {
HeartPostUsersPagingSource(heartApiService, HEART_PAGE_SIZE, postId)
}.flow
diff --git a/data/src/main/java/daily/dayo/data/repository/MemberRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/MemberRepositoryImpl.kt
index e5b68023..96103196 100644
--- a/data/src/main/java/daily/dayo/data/repository/MemberRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/MemberRepositoryImpl.kt
@@ -45,19 +45,19 @@ class MemberRepositoryImpl @Inject constructor(
): NetworkResponse =
memberApiService.requestUpdateMyProfile(nickname, profileImg, onBasicProfileImg)
- override suspend fun requestLoginKakao(accessToken: String): NetworkResponse =
- when (val response = memberApiService.requestLoginKakao(MemberOAuthRequest(accessToken))) {
+ override suspend fun requestSignInKakao(accessToken: String): NetworkResponse =
+ when (val response = memberApiService.requestSignInKakao(MemberOAuthRequest(accessToken))) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toUserTokenResponse())
is NetworkResponse.NetworkError -> response
is NetworkResponse.ApiError -> response
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestLoginEmail(
+ override suspend fun requestSignInEmail(
email: String,
password: String
): NetworkResponse =
- when (val response = memberApiService.requestLoginEmail(
+ when (val response = memberApiService.requestSignInEmail(
MemberSignInRequest(
email = email,
password = password
@@ -138,6 +138,38 @@ class MemberRepositoryImpl @Inject constructor(
override suspend fun requestResign(content: String): NetworkResponse =
memberApiService.requestResign(content)
+ override suspend fun requestResignGuideRecordImage(guideFileName: String): NetworkResponse =
+ when (val response = memberApiService.requestResignGuideRecordImage(guideFileName)) {
+ is NetworkResponse.Success -> NetworkResponse.Success(response.body?.bytes())
+ is NetworkResponse.NetworkError -> response
+ is NetworkResponse.ApiError -> response
+ is NetworkResponse.UnknownError -> response
+ }
+
+ override suspend fun requestResignGuideRecordWords(): NetworkResponse> =
+ when (val response = memberApiService.requestResignGuideRecordWords()) {
+ is NetworkResponse.Success -> NetworkResponse.Success(response.body ?: emptyList())
+ is NetworkResponse.NetworkError -> response
+ is NetworkResponse.ApiError -> response
+ is NetworkResponse.UnknownError -> response
+ }
+
+ override suspend fun requestResignGuideFollowImage(guideFileName: String): NetworkResponse =
+ when (val response = memberApiService.requestResignGuideFollowImage(guideFileName)) {
+ is NetworkResponse.Success -> NetworkResponse.Success(response.body?.bytes())
+ is NetworkResponse.NetworkError -> response
+ is NetworkResponse.ApiError -> response
+ is NetworkResponse.UnknownError -> response
+ }
+
+ override suspend fun requestResignGuideFollowWords(): NetworkResponse> =
+ when (val response = memberApiService.requestResignGuideFollowWords()) {
+ is NetworkResponse.Success -> NetworkResponse.Success(response.body ?: emptyList())
+ is NetworkResponse.NetworkError -> response
+ is NetworkResponse.ApiError -> response
+ is NetworkResponse.UnknownError -> response
+ }
+
override suspend fun requestReceiveAlarm(): NetworkResponse =
when (val response = memberApiService.requestReceiveAlarm()) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.onReceiveAlarm)
@@ -149,13 +181,16 @@ class MemberRepositoryImpl @Inject constructor(
override suspend fun requestChangeReceiveAlarm(onReceiveAlarm: Boolean): NetworkResponse =
memberApiService.requestChangeReceiveAlarm(ChangeReceiveAlarmRequest(onReceiveAlarm))
- override suspend fun requestLogout(): NetworkResponse =
- memberApiService.requestLogout()
+ override suspend fun requestSignOut(): NetworkResponse =
+ memberApiService.requestSignOut()
override suspend fun requestCheckEmail(email: String): NetworkResponse =
memberApiService.requestCheckEmail(email)
- override suspend fun requestCheckEmailAuth(email: String): NetworkResponse =
+ override suspend fun requestCheckOAuthEmail(email: String): NetworkResponse =
+ memberApiService.requestCheckOAuthEmail(email)
+
+ override suspend fun requestCertificateEmailPasswordReset(email: String): NetworkResponse =
when (val response = memberApiService.requestCheckEmailAuth(email)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.authCode)
is NetworkResponse.NetworkError -> response
diff --git a/data/src/main/java/daily/dayo/data/repository/NoticeRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/NoticeRepositoryImpl.kt
index 8832020a..8ed8b0bd 100644
--- a/data/src/main/java/daily/dayo/data/repository/NoticeRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/NoticeRepositoryImpl.kt
@@ -19,7 +19,7 @@ class NoticeRepositoryImpl @Inject constructor(
NoticePagingSource(noticeApiService, NOTICE_PAGE_SIZE)
}.flow
- override suspend fun requestDetailNotice(noticeId: Int): NetworkResponse =
+ override suspend fun requestDetailNotice(noticeId: Long): NetworkResponse =
when (
val response = noticeApiService.requestDetailNotice(noticeId)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toNoticeDetail())
diff --git a/data/src/main/java/daily/dayo/data/repository/PostRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/PostRepositoryImpl.kt
index 44c69fbc..bbef09c6 100644
--- a/data/src/main/java/daily/dayo/data/repository/PostRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/PostRepositoryImpl.kt
@@ -2,8 +2,9 @@ package daily.dayo.data.repository
import androidx.paging.Pager
import androidx.paging.PagingConfig
-import daily.dayo.data.datasource.remote.post.*
-import daily.dayo.data.mapper.toLikePostDeleteResponse
+import daily.dayo.data.datasource.remote.post.EditPostRequest
+import daily.dayo.data.datasource.remote.post.FeedPagingSource
+import daily.dayo.data.datasource.remote.post.PostApiService
import daily.dayo.data.mapper.toPostCreateResponse
import daily.dayo.data.mapper.toPostDetail
import daily.dayo.data.mapper.toPostEditResponse
@@ -11,7 +12,6 @@ import daily.dayo.data.mapper.toPosts
import daily.dayo.data.mapper.toPostsCategorized
import daily.dayo.data.mapper.toPostsDayoPick
import daily.dayo.domain.model.Category
-import daily.dayo.domain.model.LikePostDeleteResponse
import daily.dayo.domain.model.NetworkResponse
import daily.dayo.domain.model.PostCreateResponse
import daily.dayo.domain.model.PostDetail
@@ -31,7 +31,7 @@ class PostRepositoryImpl @Inject constructor(
category: Category,
contents: String,
files: List,
- folderId: Int,
+ folderId: Long,
tags: Array
): NetworkResponse =
when (val response =
@@ -43,10 +43,10 @@ class PostRepositoryImpl @Inject constructor(
}
override suspend fun requestEditPost(
- postId: Int,
+ postId: Long,
category: Category,
contents: String,
- folderId: Int,
+ folderId: Long,
hashtags: List
): NetworkResponse =
when (
@@ -93,7 +93,7 @@ class PostRepositoryImpl @Inject constructor(
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestPostDetail(postId: Int): NetworkResponse =
+ override suspend fun requestPostDetail(postId: Long): NetworkResponse =
when (val response = postApiService.requestPostDetail(postId)) {
is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toPostDetail())
is NetworkResponse.NetworkError -> response
@@ -101,16 +101,16 @@ class PostRepositoryImpl @Inject constructor(
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestDeletePost(postId: Int): NetworkResponse =
+ override suspend fun requestDeletePost(postId: Long): NetworkResponse =
when (val response = postApiService.requestDeletePost(postId)) {
- is NetworkResponse.Success -> NetworkResponse.Success(response.body?.toLikePostDeleteResponse())
+ is NetworkResponse.Success -> NetworkResponse.Success(response.body)
is NetworkResponse.NetworkError -> response
is NetworkResponse.ApiError -> response
is NetworkResponse.UnknownError -> response
}
- override suspend fun requestFeedList() = Pager(PagingConfig(pageSize = FEED_PAGE_SIZE)) {
- FeedPagingSource(postApiService, FEED_PAGE_SIZE)
+ override suspend fun requestFeedList(category: Category) = Pager(PagingConfig(pageSize = FEED_PAGE_SIZE)) {
+ FeedPagingSource(category, postApiService, FEED_PAGE_SIZE)
}.flow
companion object {
diff --git a/data/src/main/java/daily/dayo/data/repository/ReportRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/ReportRepositoryImpl.kt
index 8bfa00a7..c1b226da 100644
--- a/data/src/main/java/daily/dayo/data/repository/ReportRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/ReportRepositoryImpl.kt
@@ -1,5 +1,6 @@
package daily.dayo.data.repository
+import daily.dayo.data.datasource.remote.report.CreateReportCommentRequest
import daily.dayo.data.datasource.remote.report.CreateReportMemberRequest
import daily.dayo.data.datasource.remote.report.CreateReportPostRequest
import daily.dayo.data.datasource.remote.report.ReportApiService
@@ -23,7 +24,7 @@ class ReportRepositoryImpl @Inject constructor(
override suspend fun requestSavePostReport(
comment: String,
- postId: Int
+ postId: Long
): NetworkResponse =
reportApiService.requestSavePostReport(
CreateReportPostRequest(
@@ -31,4 +32,15 @@ class ReportRepositoryImpl @Inject constructor(
postId = postId
)
)
+
+ override suspend fun requestSaveCommentReport(
+ comment: String,
+ commentId: Long
+ ): NetworkResponse =
+ reportApiService.requestSaveCommentReport(
+ CreateReportCommentRequest(
+ comment = comment,
+ commentId = commentId
+ )
+ )
}
\ No newline at end of file
diff --git a/data/src/main/java/daily/dayo/data/repository/SearchRepositoryImpl.kt b/data/src/main/java/daily/dayo/data/repository/SearchRepositoryImpl.kt
index ed06891a..ea8232b8 100644
--- a/data/src/main/java/daily/dayo/data/repository/SearchRepositoryImpl.kt
+++ b/data/src/main/java/daily/dayo/data/repository/SearchRepositoryImpl.kt
@@ -6,9 +6,15 @@ import androidx.paging.PagingConfig
import androidx.paging.PagingData
import daily.dayo.data.datasource.local.SharedManager
import daily.dayo.data.datasource.remote.search.SearchApiService
+import daily.dayo.data.datasource.remote.search.SearchFollowUserPagingSource
+import daily.dayo.data.datasource.remote.search.SearchUserPagingSource
import daily.dayo.data.datasource.remote.search.SearchPagingSource
import daily.dayo.domain.model.NetworkResponse
import daily.dayo.domain.model.Search
+import daily.dayo.domain.model.SearchHistory
+import daily.dayo.domain.model.SearchHistoryDetail
+import daily.dayo.domain.model.SearchHistoryType
+import daily.dayo.domain.model.SearchUser
import daily.dayo.domain.repository.SearchRepository
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
@@ -18,41 +24,70 @@ class SearchRepositoryImpl @Inject constructor(
private val context: Context
) : SearchRepository {
- override fun requestSearchKeywordRecentList(): ArrayList =
+ override fun requestSearchKeywordRecentList(): SearchHistory =
SharedManager(context = context).getSearchKeywordRecent()
- override fun deleteSearchKeywordRecent(keyword: String) {
- val initialSearchTagList = requestSearchKeywordRecentList()
- initialSearchTagList.remove(keyword)
- SharedManager(context = context).setSearchKeywordRecent(initialSearchTagList)
+ override fun deleteSearchKeywordRecent(keyword: String, deleteKeywordType: SearchHistoryType): SearchHistory {
+ val deletedSearchHistory = SharedManager(context = context).getSearchKeywordRecent().copy(
+ count = SharedManager(context = context).getSearchKeywordRecent().count - 1,
+ data = (SharedManager(context = context).getSearchKeywordRecent().data).filter {
+ !(it.history == keyword && it.searchHistoryType == deleteKeywordType)
+ }
+ )
+
+ SharedManager(context = context).saveSearchHistory(deletedSearchHistory)
+ return requestSearchKeywordRecentList()
}
- override fun clearSearchKeywordRecent() {
- SharedManager(context = context).setSearchKeywordRecent(ArrayList())
+ override fun clearSearchKeywordRecent(): SearchHistory {
+ SharedManager(context = context).clearSearchHistory()
+ return requestSearchKeywordRecentList()
}
- override fun requestSearchKeyword(keyword: String): Flow> {
- val initialSearchTagList = requestSearchKeywordRecentList()
- if (initialSearchTagList.contains(keyword)) { // ๊ฒ์ํ ์ ์๋ ๊ฒฝ์ฐ ์ต์ ํ๋ฅผ ์ํ์ฌ ์ญ์ ํ๊ณ ์ถ๊ฐ
- initialSearchTagList.remove(keyword)
- }
- initialSearchTagList.add(keyword)
- SharedManager(context = context).setSearchKeywordRecent(initialSearchTagList)
- return requestSearchTag(tag = keyword)
+ override fun updateSearchKeywordRecentList(keyword: String, requestSearchType: SearchHistoryType) {
+ SharedManager(context = context).updateSearchHistory(
+ SearchHistoryDetail(
+ history = keyword,
+ searchHistoryType = requestSearchType,
+ searchId = 0
+ ))
}
- override fun requestSearchTag(tag: String) = Pager(PagingConfig(pageSize = SEARCH_PAGE_SIZE)) {
+ override fun requestSearchUser(nickname: String): Flow> = Pager(PagingConfig(pageSize = SEARCH_PAGE_SIZE)) {
+ SearchUserPagingSource(searchApiService, SEARCH_PAGE_SIZE, nickname)
+ }.flow
+
+ override fun requestSearchFollowUser(nickname: String): Flow> = Pager(PagingConfig(pageSize = SEARCH_PAGE_SIZE)) {
+ SearchFollowUserPagingSource(searchApiService, SEARCH_PAGE_SIZE, nickname)
+ }.flow
+
+ override fun requestSearchTag(tag: String): Flow> = Pager(PagingConfig(pageSize = SEARCH_PAGE_SIZE)) {
SearchPagingSource(searchApiService, SEARCH_PAGE_SIZE, tag)
}.flow
- override suspend fun requestSearchTotalCount(tag: String, end: Int) : Int =
- searchApiService.requestSearchTag(tag, end).let { ApiResponse ->
- when(ApiResponse) {
- is NetworkResponse.Success -> {
- return ApiResponse.body!!.totalCount
+ override suspend fun requestSearchTotalCount(tag: String, end: Int, searchHistoryType: SearchHistoryType) : Int =
+ when (searchHistoryType) {
+ SearchHistoryType.TAG -> {
+ searchApiService.requestSearchTag(tag, end).let { ApiResponse ->
+ when(ApiResponse) {
+ is NetworkResponse.Success -> {
+ return ApiResponse.body!!.totalCount
+ }
+ else -> return 0
+ }
+ }
+ }
+ SearchHistoryType.USER -> {
+ searchApiService.requestSearchUser(tag, end).let { ApiResponse ->
+ when(ApiResponse) {
+ is NetworkResponse.Success -> {
+ return ApiResponse.body!!.totalCount
+ }
+ else -> return 0
+ }
}
- else -> return 0
}
+ else -> 0
}
companion object {
diff --git a/domain/src/main/java/daily/dayo/domain/model/Bookmark.kt b/domain/src/main/java/daily/dayo/domain/model/Bookmark.kt
index e1e6525e..cc5c8bdf 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Bookmark.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Bookmark.kt
@@ -1,10 +1,10 @@
package daily.dayo.domain.model
data class BookmarkPost(
- val postId: Int,
+ val postId: Long,
val thumbnailImage: String
)
data class BookmarkPostResponse(
val memberId: String,
- val postId: Int
+ val postId: Long
)
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/model/Comment.kt b/domain/src/main/java/daily/dayo/domain/model/Comment.kt
index de396f97..50d97b72 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Comment.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Comment.kt
@@ -1,15 +1,22 @@
package daily.dayo.domain.model
data class Comment(
- val commentId: Int,
- val contents: String,
- val createTime: String,
+ val commentId: Long,
val memberId: String,
val nickname: String,
- val profileImg: String
+ val profileImg: String,
+ val contents: String,
+ val createTime: String,
+ val replyList: List,
+ val mentionList: List,
)
data class Comments(
val count: Int,
val data: List
+)
+
+data class MentionUser(
+ val memberId: String,
+ val nickname: String
)
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/model/Folder.kt b/domain/src/main/java/daily/dayo/domain/model/Folder.kt
index bfa67931..e98330dc 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Folder.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Folder.kt
@@ -1,7 +1,15 @@
package daily.dayo.domain.model
+enum class FolderOrder {
+ NEW, OLD;
+
+ override fun toString(): String {
+ return name.lowercase()
+ }
+}
+
data class Folder(
- val folderId: Int?,
+ val folderId: Long?,
val title: String,
val memberId: String?,
val privacy: Privacy,
@@ -14,6 +22,7 @@ data class Folders(
val count: Int,
val data: List
)
+
data class FoldersMine(
val count: Int,
val data: List
@@ -21,25 +30,20 @@ data class FoldersMine(
data class FolderPost(
val createDate: String,
- val postId: Int,
+ val postId: Long,
val thumbnailImage: String
)
-data class FolderOrder(
- var folderId: Int,
- var orderIndex: Int
-)
-
data class FolderCreateResponse(
- val folderId: Int
+ val folderId: Long
)
data class FolderCreateInPostResponse(
- val folderId: Int
+ val folderId: Long
)
data class FolderEditResponse(
- val folderId: Int
+ val folderId: Long
)
data class FolderInfo(
@@ -47,6 +51,6 @@ data class FolderInfo(
val name: String,
val postCount: Int,
val privacy: Privacy,
- var subheading: String?,
+ var subheading: String,
val thumbnailImage: String
)
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/model/Follow.kt b/domain/src/main/java/daily/dayo/domain/model/Follow.kt
index 2766e4ce..844d81b8 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Follow.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Follow.kt
@@ -7,19 +7,14 @@ data class Follow(
val profileImg: String
)
-data class Followings(
+data class Following(
val count: Int,
- val data: List
+ val data: List
)
-data class Followers(
+
+data class Follower(
val count: Int,
- val data: List
-)
-data class MyFollower(
- val isFollow: Boolean,
- val memberId: String,
- val nickname: String,
- val profileImg: String
+ val data: List
)
data class FollowCreateResponse(
diff --git a/domain/src/main/java/daily/dayo/domain/model/Like.kt b/domain/src/main/java/daily/dayo/domain/model/Like.kt
index 5384c88d..767ea419 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Like.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Like.kt
@@ -1,16 +1,10 @@
package daily.dayo.domain.model
data class LikePost(
- val postId: Int,
+ val postId: Long,
val thumbnailImage: String
)
data class LikePostResponse(
- val memberId: String,
- val postId: Int,
- val allCount: Int
-)
-
-data class LikePostDeleteResponse(
val allCount: Int
)
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/model/Notice.kt b/domain/src/main/java/daily/dayo/domain/model/Notice.kt
index ee1cc21c..f70d015c 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Notice.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Notice.kt
@@ -3,7 +3,7 @@ package daily.dayo.domain.model
import java.io.Serializable
data class Notice(
- val noticeId: Int,
+ val noticeId: Long,
val title: String,
val uploadDate: String
) : Serializable
diff --git a/domain/src/main/java/daily/dayo/domain/model/Notification.kt b/domain/src/main/java/daily/dayo/domain/model/Notification.kt
index 4d519043..e9922a6b 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Notification.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Notification.kt
@@ -9,5 +9,6 @@ data class Notification(
val image: String?,
val nickname: String?,
val memberId: String?,
- val postId: Int?
+ val postId: Long?,
+ val profileImage: String?,
)
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/model/Post.kt b/domain/src/main/java/daily/dayo/domain/model/Post.kt
index fec1d746..73f7a0a5 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Post.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Post.kt
@@ -1,7 +1,7 @@
package daily.dayo.domain.model
data class Post(
- val postId: Int?,
+ val postId: Long?,
val memberId: String?,
val nickname: String,
val userProfileImage: String,
@@ -16,7 +16,7 @@ data class Post(
var bookmark: Boolean?,
var heart: Boolean,
var heartCount: Int,
- val folderId: Int?,
+ val folderId: Long?,
val folderName: String?,
var preLoadThumbnail: ByteArray?=null,
var preLoadUserImg: ByteArray?=null
@@ -27,7 +27,7 @@ data class PostDetail(
val category: Category,
val contents: String,
val createDateTime: String,
- val folderId: Int,
+ val folderId: Long,
val folderName: String,
val hashtags: List,
var heart: Boolean,
@@ -39,11 +39,11 @@ data class PostDetail(
)
data class PostCreateResponse(
- val id: Int
+ val id: Long
)
data class PostEditResponse(
- val postId: Int
+ val postId: Long
)
data class Posts(
diff --git a/domain/src/main/java/daily/dayo/domain/model/Search.kt b/domain/src/main/java/daily/dayo/domain/model/Search.kt
index f345922a..e0c2f799 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Search.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Search.kt
@@ -1,6 +1,30 @@
package daily.dayo.domain.model
data class Search(
- val postId: Int,
+ val postId: Long,
val thumbnailImage: String
-)
\ No newline at end of file
+)
+
+data class SearchUser(
+ val isFollow: Boolean,
+ val memberId: String,
+ val nickname: String,
+ val profileImg: String,
+)
+
+data class SearchHistory(
+ val count: Int,
+ val data: List
+)
+
+data class SearchHistoryDetail(
+ val history: String,
+ val searchId: Int,
+ val searchHistoryType: SearchHistoryType
+)
+
+
+enum class SearchHistoryType {
+ USER,
+ TAG
+}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/model/Topic.kt b/domain/src/main/java/daily/dayo/domain/model/Topic.kt
index b1e30fed..8477d462 100644
--- a/domain/src/main/java/daily/dayo/domain/model/Topic.kt
+++ b/domain/src/main/java/daily/dayo/domain/model/Topic.kt
@@ -1,5 +1,5 @@
package daily.dayo.domain.model
enum class Topic {
- HEART, COMMENT, NOTICE, FOLLOW
+ HEART, COMMENT, NOTICE, FOLLOW, MENTION
}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/model/WithdrawalReason.kt b/domain/src/main/java/daily/dayo/domain/model/WithdrawalReason.kt
new file mode 100644
index 00000000..4e1d6a6d
--- /dev/null
+++ b/domain/src/main/java/daily/dayo/domain/model/WithdrawalReason.kt
@@ -0,0 +1,9 @@
+package daily.dayo.domain.model
+
+enum class WithdrawalReason {
+ INCONVENIENT_USE,
+ WANT_TO_DELETE_HISTORY,
+ RARELY_USED,
+ CONTENT_NOT_SATISFYING,
+ OTHER
+}
diff --git a/domain/src/main/java/daily/dayo/domain/repository/AlarmRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/AlarmRepository.kt
index 3ea858fc..61189278 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/AlarmRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/AlarmRepository.kt
@@ -8,5 +8,5 @@ import kotlinx.coroutines.flow.Flow
interface AlarmRepository {
suspend fun requestAllAlarmList(): Flow>
- suspend fun requestIsCheckAlarm(alarmId: Int): NetworkResponse
+ suspend fun markAlarmAsChecked(alarmId: Int): NetworkResponse
}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/repository/BookmarkRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/BookmarkRepository.kt
index 24c4fe8a..ad0fade0 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/BookmarkRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/BookmarkRepository.kt
@@ -8,7 +8,8 @@ import kotlinx.coroutines.flow.Flow
interface BookmarkRepository {
- suspend fun requestBookmarkPost(postId: Int): NetworkResponse
- suspend fun requestDeleteBookmarkPost(postId: Int): NetworkResponse
+ suspend fun requestBookmarkPost(postId: Long): NetworkResponse
+ suspend fun requestDeleteBookmarkPost(postId: Long): NetworkResponse
suspend fun requestAllMyBookmarkPostList(): Flow>
+ suspend fun requestBookmarkCount(): Int
}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/repository/CommentRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/CommentRepository.kt
index e5644172..6844a2ff 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/CommentRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/CommentRepository.kt
@@ -1,11 +1,13 @@
package daily.dayo.domain.repository
import daily.dayo.domain.model.Comments
+import daily.dayo.domain.model.MentionUser
import daily.dayo.domain.model.NetworkResponse
interface CommentRepository {
- suspend fun requestCreatePostComment(contents: String, postId: Int): NetworkResponse
- suspend fun requestPostComment(postId: Int): NetworkResponse
- suspend fun requestDeletePostComment(commentId: Int): NetworkResponse
+ suspend fun requestCreatePostComment(contents: String, postId: Long, mentionList: List): NetworkResponse
+ suspend fun requestCreatePostCommentReply(commentId: Long, contents: String, postId: Long, mentionList: List): NetworkResponse
+ suspend fun requestPostComment(postId: Long): NetworkResponse
+ suspend fun requestDeletePostComment(commentId: Long): NetworkResponse
}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/repository/FolderRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/FolderRepository.kt
index 05f4aeca..2ee4ae09 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/FolderRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/FolderRepository.kt
@@ -24,7 +24,7 @@ interface FolderRepository {
): NetworkResponse
suspend fun requestEditFolder(
- folderId: Int,
+ folderId: Long,
name: String,
privacy: Privacy,
subheading: String?,
@@ -34,13 +34,14 @@ interface FolderRepository {
suspend fun requestCreateFolderInPost(
name: String,
+ description: String,
privacy: Privacy
): NetworkResponse
- suspend fun requestDeleteFolder(folderId: Int): NetworkResponse
- suspend fun requestOrderFolder(folderOrders: List): NetworkResponse
+ suspend fun requestDeleteFolder(folderId: Long): NetworkResponse
+ suspend fun requestFolderMove(postIdList: List, targetFolderId: Long): NetworkResponse
suspend fun requestAllFolderList(memberId: String): NetworkResponse
suspend fun requestAllMyFolderList(): NetworkResponse
- suspend fun requestFolderInfo(folderId: Int): NetworkResponse
- suspend fun requestDetailListFolder(folderId: Int): Flow>
+ suspend fun requestFolderInfo(folderId: Long): NetworkResponse
+ suspend fun requestDetailListFolder(folderId: Long, folderOrder: FolderOrder): Flow>
}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/repository/FollowRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/FollowRepository.kt
index 95eb28c2..f0cdbb53 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/FollowRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/FollowRepository.kt
@@ -2,15 +2,15 @@ package daily.dayo.domain.repository
import daily.dayo.domain.model.FollowCreateResponse
import daily.dayo.domain.model.FollowUpCreateResponse
-import daily.dayo.domain.model.Followers
-import daily.dayo.domain.model.Followings
+import daily.dayo.domain.model.Follower
+import daily.dayo.domain.model.Following
import daily.dayo.domain.model.NetworkResponse
interface FollowRepository {
suspend fun requestCreateFollow(followerId: String): NetworkResponse
suspend fun requestDeleteFollow(followerId: String): NetworkResponse
- suspend fun requestListAllFollower(memberId: String): NetworkResponse
- suspend fun requestListAllFollowing(memberId: String): NetworkResponse
+ suspend fun requestListAllFollower(memberId: String): NetworkResponse
+ suspend fun requestListAllFollowing(memberId: String): NetworkResponse
suspend fun requestCreateFollowUp(followerId: String): NetworkResponse
}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/repository/HeartRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/HeartRepository.kt
index 15b965dc..21530a56 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/HeartRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/HeartRepository.kt
@@ -2,7 +2,6 @@ package daily.dayo.domain.repository
import androidx.paging.PagingData
import daily.dayo.domain.model.LikePost
-import daily.dayo.domain.model.LikePostDeleteResponse
import daily.dayo.domain.model.LikePostResponse
import daily.dayo.domain.model.LikeUser
import daily.dayo.domain.model.NetworkResponse
@@ -10,8 +9,8 @@ import kotlinx.coroutines.flow.Flow
interface HeartRepository {
- suspend fun requestLikePost(postId: Int): NetworkResponse
- suspend fun requestUnlikePost(postId: Int): NetworkResponse
+ suspend fun requestLikePost(postId: Long): NetworkResponse
+ suspend fun requestUnlikePost(postId: Long): NetworkResponse
suspend fun requestAllMyLikePostList(): Flow>
- suspend fun requestPostLikeUsers(postId: Int): Flow>
+ suspend fun requestPostLikeUsers(postId: Long): Flow>
}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/repository/MemberRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/MemberRepository.kt
index 5687cd20..afc83cb5 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/MemberRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/MemberRepository.kt
@@ -22,8 +22,8 @@ interface MemberRepository {
onBasicProfileImg: Boolean
): NetworkResponse
- suspend fun requestLoginKakao(accessToken: String): NetworkResponse
- suspend fun requestLoginEmail(email: String, password: String): NetworkResponse
+ suspend fun requestSignInKakao(accessToken: String): NetworkResponse
+ suspend fun requestSignInEmail(email: String, password: String): NetworkResponse
suspend fun requestMemberInfo(): NetworkResponse
suspend fun requestCheckEmailDuplicate(email: String): NetworkResponse
suspend fun requestCheckNicknameDuplicate(nickname: String): NetworkResponse
@@ -33,11 +33,16 @@ interface MemberRepository {
suspend fun requestMyProfile(): NetworkResponse
suspend fun requestOtherProfile(memberId: String): NetworkResponse
suspend fun requestResign(content: String): NetworkResponse
+ suspend fun requestResignGuideRecordImage(guideFileName: String): NetworkResponse
+ suspend fun requestResignGuideRecordWords(): NetworkResponse>
+ suspend fun requestResignGuideFollowImage(guideFileName: String): NetworkResponse
+ suspend fun requestResignGuideFollowWords(): NetworkResponse>
suspend fun requestReceiveAlarm(): NetworkResponse
suspend fun requestChangeReceiveAlarm(onReceiveAlarm: Boolean): NetworkResponse
- suspend fun requestLogout(): NetworkResponse
+ suspend fun requestSignOut(): NetworkResponse
suspend fun requestCheckEmail(email: String): NetworkResponse
- suspend fun requestCheckEmailAuth(email: String): NetworkResponse
+ suspend fun requestCheckOAuthEmail(email: String): NetworkResponse
+ suspend fun requestCertificateEmailPasswordReset(email: String): NetworkResponse
suspend fun requestCheckCurrentPassword(password: String): NetworkResponse
suspend fun requestChangePassword(email: String, password: String): NetworkResponse
suspend fun requestSettingChangePassword(email: String, password: String): NetworkResponse
diff --git a/domain/src/main/java/daily/dayo/domain/repository/NoticeRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/NoticeRepository.kt
index 04f85a62..537abffb 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/NoticeRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/NoticeRepository.kt
@@ -8,5 +8,5 @@ import kotlinx.coroutines.flow.Flow
interface NoticeRepository {
suspend fun requestAllNoticeList(): Flow>
- suspend fun requestDetailNotice(noticeId: Int): NetworkResponse
+ suspend fun requestDetailNotice(noticeId: Long): NetworkResponse
}
\ No newline at end of file
diff --git a/domain/src/main/java/daily/dayo/domain/repository/PostRepository.kt b/domain/src/main/java/daily/dayo/domain/repository/PostRepository.kt
index 1e59edf6..727e5e95 100644
--- a/domain/src/main/java/daily/dayo/domain/repository/PostRepository.kt
+++ b/domain/src/main/java/daily/dayo/domain/repository/PostRepository.kt
@@ -2,7 +2,6 @@ package daily.dayo.domain.repository
import androidx.paging.PagingData
import daily.dayo.domain.model.Category
-import daily.dayo.domain.model.LikePostDeleteResponse
import daily.dayo.domain.model.NetworkResponse
import daily.dayo.domain.model.Post
import daily.dayo.domain.model.PostCreateResponse
@@ -20,7 +19,7 @@ interface PostRepository {
category: Category,
contents: String,
files: List,
- folderId: Int,
+ folderId: Long,
tags: Array