Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT/#91] 캘린더뷰 / 스크랩 목록 서버통신 #101

Merged
merged 51 commits into from
Jul 17, 2024
Merged
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
4373380
[FEAT/#72] 로그인 로직 작성
leeeyubin Jul 13, 2024
fdee2d7
[FEAT/#72] string 수정
leeeyubin Jul 13, 2024
2565fb5
[FEAT/#72] 로그인 서버통신 로직 구현
leeeyubin Jul 13, 2024
f362320
Merge branch 'develop' of https://github.com/teamterning/Terning-Andr…
leeeyubin Jul 15, 2024
593bbac
Merge branch 'develop' of https://github.com/teamterning/Terning-Andr…
leeeyubin Jul 15, 2024
b019e89
Merge remote-tracking branch 'origin/develop' into feat/#79-search-basic
arinming Jul 15, 2024
783674c
[FEAT/#79] SearchService, DTO 추가
arinming Jul 15, 2024
a6ebc71
[FEAT/#79] 조회수 많은 공고 data 모듈 설계
arinming Jul 15, 2024
a688325
[CHORE/#72] 명세서에 맞게 수정
leeeyubin Jul 15, 2024
a759a73
[FEAT/#79] 조회수 많은 공고 ViewModel 설계
arinming Jul 15, 2024
a3e34da
Merge remote-tracking branch 'origin/develop' into feat/#79-search-basic
arinming Jul 15, 2024
70735e0
[DEL/#72] 기존 Mock 관련 파일 삭제
leeeyubin Jul 15, 2024
9eeedf7
[FEAT/#79] 조회수 많은 공고 뷰모델 호출 로직 추가
arinming Jul 15, 2024
0b3d0f3
[FEAT/#72] Token 관련 로직 구현
leeeyubin Jul 15, 2024
3756872
[FEAT/#79] 인턴 컴포넌트에 searchViewsList 적용
arinming Jul 15, 2024
334658a
[FEAT/#72] BASE_URL 수정
leeeyubin Jul 15, 2024
87546c6
[CHORE/#72] 매개변수 data -> request
leeeyubin Jul 15, 2024
396e4f7
[FEAT/#79] 더미데이터 연결
arinming Jul 15, 2024
b5bb2cd
[FEAT/#79] 이미지 매핑
arinming Jul 15, 2024
4dad804
[FEAT/#79] 공고 상세 페이지 경로 이동
arinming Jul 15, 2024
572efd4
[RENAME/#79] 공고 정보 DTO 이름 변경
arinming Jul 15, 2024
2f21b38
[CHORE/#72] 로그 삭제
leeeyubin Jul 15, 2024
4e52854
[CHORE/#72] 파일 삭제
leeeyubin Jul 15, 2024
3375f8d
[RENAME/#79] 공고 정보 DTO 이름 변경
arinming Jul 15, 2024
a939cff
[FEAT/#79] 빈 검색어 입력 제한
arinming Jul 15, 2024
f0debfc
[CHORE/#72] 로직 수정
leeeyubin Jul 15, 2024
08d7b39
[REFACTOR/#79] BaseResponse 수정
arinming Jul 16, 2024
afd35a6
[REFACTOR/#79] 리뷰에 따른 DTO 리팩토링 및 데이터 모듈 리네임
arinming Jul 16, 2024
4d3990d
[RENAME/#79] 리뷰에 따른 데이터 모델 리네임
arinming Jul 16, 2024
fd5dd93
[Merge] #79 -> develop
arinming Jul 16, 2024
adedaf5
[CHORE/#72] solving conflict
leeeyubin Jul 16, 2024
0dd793e
[CHORE/#72] solving conflict
leeeyubin Jul 16, 2024
605a5f8
[CHORE/#72] solving conflict
leeeyubin Jul 16, 2024
888b996
[MERGE] #72 -> develop
leeeyubin Jul 16, 2024
8988ae8
[FEAT/#91] Dto 생성 및 이름 변경
boiledeggg Jul 16, 2024
59ca4f5
[RENAME/#91] 통신 클래스 네이밍 수정
boiledeggg Jul 16, 2024
5302933
[FEAT/#91] 모듈 추가
boiledeggg Jul 16, 2024
3565d93
[FEAT/#91] 데이터소스 코드 추가
boiledeggg Jul 16, 2024
2db05f0
[FEAT/#91] 레포지토리 코드 추가
boiledeggg Jul 16, 2024
79a3ed2
[RENAME/#91] State 이름 변경
boiledeggg Jul 16, 2024
88684e7
[FEAT/#91] 뷰모델 로직 구현
boiledeggg Jul 16, 2024
55be60d
[FEAT/#91] 월간 스크랩 목록 구현
boiledeggg Jul 16, 2024
b64665b
[CHORE/#91] 월간 스크랩 목록 오류 수정
boiledeggg Jul 16, 2024
35e5ac2
[CHORE/#91] 월간 스크랩 목록 코드 수정
boiledeggg Jul 16, 2024
9cf9e7f
[FEAT/#91] 일간 스크랩 목록 로직 구현
boiledeggg Jul 16, 2024
c22a402
[CHORE/#91] 일간 스크랩 목록 로직 오류 수정
boiledeggg Jul 16, 2024
0200946
[FEAT/#91] 일간 스크랩 목록 빈화면 적용
boiledeggg Jul 16, 2024
e0db6a1
[REFACTOR/#91] 캘린더 전면 수정
boiledeggg Jul 16, 2024
1ce7179
Merge remote-tracking branch 'origin/develop' into feat/#91-calendar-…
boiledeggg Jul 16, 2024
5717f6e
[CHORE/#91] 컨플릭 수정
boiledeggg Jul 16, 2024
76093d1
[REFACTOR/#91] 임포트 정리
boiledeggg Jul 17, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions app/src/main/java/com/terning/point/di/DataSourceModule.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.terning.point.di

import com.terning.data.datasource.MockDataSource
import com.terning.data.datasource.ScrapDataSource
import com.terning.data.datasourceimpl.MockDataSourceImpl
import com.terning.data.datasourceimpl.ScrapDataSourceImpl
import com.terning.data.repositoryimpl.ScrapRepositoryImpl
import com.terning.domain.repository.ScrapRepository
import com.terning.data.datasource.AuthDataSource
import com.terning.data.datasource.SearchDataSource
import com.terning.data.datasourceimpl.AuthDataSourceImpl
import com.terning.data.datasourceimpl.SearchDataSourceImpl
import com.terning.data.datasource.CalendarDataSource
import com.terning.data.datasourceimpl.CalendarDataSourceImpl
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
Expand All @@ -18,9 +18,14 @@ abstract class DataSourceModule {

@Binds
@Singleton
abstract fun bindScrapRepository(scrapDataSourceImpl: ScrapDataSourceImpl): ScrapDataSource
abstract fun bindCalendarRepository(calendarDataSourceImpl: CalendarDataSourceImpl): CalendarDataSource

@Binds
@Singleton
abstract fun bindMockDataSource(mockDataSourceImpl: MockDataSourceImpl): MockDataSource
abstract fun bindAuthDataSource(authDataSourceImpl: AuthDataSourceImpl): AuthDataSource

@Binds
@Singleton
abstract fun bindSearchViewsDataSource(searchViewsDataSourceImpl: SearchDataSourceImpl):
SearchDataSource
}
27 changes: 27 additions & 0 deletions app/src/main/java/com/terning/point/di/DataStoreModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.terning.point.di

import android.content.Context
import android.content.SharedPreferences
import com.terning.data.local.TerningDataStore
import com.terning.data.local.TerningDataStoreImpl
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object DataStoreModule {

@Provides
@Singleton
fun provideSharedPreferences(@ApplicationContext context: Context): SharedPreferences =
context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE)

@Provides
@Singleton
fun provideTerningDataStore(dataStoreImpl: TerningDataStoreImpl): TerningDataStore =
dataStoreImpl
}
24 changes: 18 additions & 6 deletions app/src/main/java/com/terning/point/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package com.terning.point.di

import com.terning.data.repositoryimpl.MockRepositoryImpl
import com.terning.data.repositoryimpl.ScrapRepositoryImpl
import com.terning.domain.repository.MockRepository
import com.terning.domain.repository.ScrapRepository
import com.terning.data.repositoryimpl.AuthRepositoryImpl
import com.terning.data.repositoryimpl.CalendarRepositoryImpl
import com.terning.data.repositoryimpl.SearchViewsRepositoryImpl
import com.terning.data.repositoryimpl.TokenRepositoryImpl
import com.terning.domain.repository.AuthRepository
import com.terning.domain.repository.CalendarRepository
import com.terning.domain.repository.SearchRepository
import com.terning.domain.repository.TokenRepository
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
Expand All @@ -16,9 +20,17 @@ abstract class RepositoryModule {

@Binds
@Singleton
abstract fun scrapRepository(scrapRepositoryImpl: ScrapRepositoryImpl): ScrapRepository
abstract fun calendarRepository(calendarRepositoryImpl: CalendarRepositoryImpl): CalendarRepository

@Binds
@Singleton
abstract fun bindMockRepository(mockRepositoryImpl: MockRepositoryImpl): MockRepository
abstract fun bindAuthRepository(authRepositoryImpl: AuthRepositoryImpl): AuthRepository

@Binds
@Singleton
abstract fun bindTokenRepository(tokenRepositoryImpl: TokenRepositoryImpl): TokenRepository

@Binds
@Singleton
abstract fun bindSearchViewsRepository(searchViewsRepositoryImpl: SearchViewsRepositoryImpl): SearchRepository
}
10 changes: 5 additions & 5 deletions app/src/main/java/com/terning/point/di/RetrofitModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package com.terning.point.di

import com.terning.core.extension.isJsonArray
import com.terning.core.extension.isJsonObject
import com.terning.point.BuildConfig
import com.terning.point.di.qualifier.OPEN
import com.terning.point.BuildConfig.BASE_URL
import com.terning.point.di.qualifier.JWT
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand Down Expand Up @@ -65,12 +65,12 @@ object RetrofitModule {

@Provides
@Singleton
@OPEN
fun provideOpenRetrofit(
@JWT
fun provideJWTRetrofit(
client: OkHttpClient,
factory: Converter.Factory
): Retrofit = Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.baseUrl(BASE_URL)
.addConverterFactory(factory)
.client(client)
.build()
Expand Down
20 changes: 16 additions & 4 deletions app/src/main/java/com/terning/point/di/ServiceModule.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.terning.point.di

import com.terning.data.service.MockService
import com.terning.point.di.qualifier.OPEN
import com.terning.data.service.AuthService
import com.terning.data.service.CalendarService
import com.terning.data.service.SearchService
import com.terning.point.di.qualifier.JWT
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand All @@ -15,7 +17,17 @@ object ServiceModule {

@Provides
@Singleton
fun provideMockService(@OPEN retrofit: Retrofit): MockService =
retrofit.create(MockService::class.java)
fun provideAuthService(@JWT retrofit: Retrofit): AuthService =
retrofit.create(AuthService::class.java)

@Provides
@Singleton
fun provideSearchService(@JWT retrofit: Retrofit): SearchService =
retrofit.create(SearchService::class.java)

@Provides
@Singleton
fun provideCalendarService(@JWT retrofit: Retrofit): CalendarService =
retrofit.create(CalendarService::class.java)

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ import javax.inject.Qualifier

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class OPEN
annotation class JWT
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,13 @@ fun TerningBasicTextField(
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = {
keyboardController?.hide()
focusManager.clearFocus()
onDoneAction?.invoke()
if (value.isNotBlank()) {
keyboardController?.hide()
focusManager.clearFocus()
if (onDoneAction != null) {
onDoneAction()
}
}
}
),

Expand Down
6 changes: 6 additions & 0 deletions core/src/main/java/com/terning/core/extension/LocalDateExt.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.terning.core.extension

import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.format.TextStyle
import java.util.Locale

Expand All @@ -10,6 +11,11 @@ fun LocalDate.getStringAsTitle(): String =
fun LocalDate.getDateStringInKorean(): String =
"${monthValue}월 ${dayOfMonth}일 ${dayOfWeek.getDisplayName(TextStyle.FULL, Locale.KOREAN)}"

fun LocalDate.getDateAsMapString(): String {
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
return format(formatter)
}

fun LocalDate.getWeekIndexContainingSelectedDate(inDays: Int): Int = (inDays + dayOfMonth - 1) / 7

fun LocalDate.isToday(): Boolean = this == LocalDate.now()
3 changes: 3 additions & 0 deletions core/src/main/java/com/terning/core/extension/Map.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.terning.core.extension

fun<T> List<T>?.isListNotEmpty():Boolean = this.orEmpty().isNotEmpty()
12 changes: 12 additions & 0 deletions data/src/main/java/com/terning/data/datasource/AuthDataSource.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.terning.data.datasource

import com.terning.data.dto.BaseResponse
import com.terning.data.dto.request.SignInRequestDto
import com.terning.data.dto.response.SignInResponseDto

interface AuthDataSource {
suspend fun postSignIn(
authorization: String,
platform: SignInRequestDto
): BaseResponse<SignInResponseDto>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.terning.data.datasource

import com.terning.data.dto.BaseResponse
import com.terning.data.dto.request.CalendarDayListRequestDto
import com.terning.data.dto.request.CalendarMonthListRequestDto
import com.terning.data.dto.request.CalendarMonthRequestDto
import com.terning.data.dto.response.CalendarDayListResponseDto
import com.terning.data.dto.response.CalendarMonthListResponseDto
import com.terning.data.dto.response.CalendarMonthResponseDto

interface CalendarDataSource {
suspend fun getCalendarMonth(request: CalendarMonthRequestDto): BaseResponse<List<CalendarMonthResponseDto>>
suspend fun getCalendarMonthList(request: CalendarMonthListRequestDto): BaseResponse<List<CalendarMonthListResponseDto>>
suspend fun getCalendarDayList(request: CalendarDayListRequestDto): BaseResponse<List<CalendarDayListResponseDto>>
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.terning.data.datasource

import com.terning.data.dto.BaseResponse
import com.terning.data.dto.response.SearchViewsResponseDto

interface SearchDataSource {
suspend fun getSearchViews(): BaseResponse<SearchViewsResponseDto>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.terning.data.datasourceimpl

import com.terning.data.datasource.AuthDataSource
import com.terning.data.dto.BaseResponse
import com.terning.data.dto.request.SignInRequestDto
import com.terning.data.dto.response.SignInResponseDto
import com.terning.data.service.AuthService
import javax.inject.Inject

class AuthDataSourceImpl @Inject constructor(
private val authService: AuthService
) : AuthDataSource {
override suspend fun postSignIn(
authorization: String,
platform: SignInRequestDto
): BaseResponse<SignInResponseDto> = authService.postSignIn(authorization, platform)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.terning.data.datasourceimpl

import com.terning.data.datasource.CalendarDataSource
import com.terning.data.dto.BaseResponse
import com.terning.data.dto.request.CalendarDayListRequestDto
import com.terning.data.dto.request.CalendarMonthListRequestDto
import com.terning.data.dto.request.CalendarMonthRequestDto
import com.terning.data.dto.response.CalendarDayListResponseDto
import com.terning.data.dto.response.CalendarMonthListResponseDto
import com.terning.data.dto.response.CalendarMonthResponseDto
import com.terning.data.service.CalendarService
import javax.inject.Inject

class CalendarDataSourceImpl @Inject constructor(
private val calendarService: CalendarService
) : CalendarDataSource {
override suspend fun getCalendarMonth(request: CalendarMonthRequestDto): BaseResponse<List<CalendarMonthResponseDto>> =
CalendarList.getCalendarScrapMonth(request)

override suspend fun getCalendarMonthList(request: CalendarMonthListRequestDto): BaseResponse<List<CalendarMonthListResponseDto>> =
CalendarList.getCalendarScrapMonthList(request)

override suspend fun getCalendarDayList(request: CalendarDayListRequestDto): BaseResponse<List<CalendarDayListResponseDto>> =
CalendarList.getCalendarScrapDayList(request)
}
Loading