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

[merge] v.1.0.1 버전 태그 생성 #223

Merged
merged 47 commits into from
Nov 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
a8d0f16
[fix] #202 api level 31 이전, 이후에 대해 별도로 테마 지정
leeeha Oct 8, 2023
696579e
[mod] #202 내부 테스트 앱 만들기 위해 버전 코드 수정
leeeha Oct 8, 2023
8b4e4d7
[mod] #202 프로덕션 앱을 위한 버전 코드 수정
leeeha Oct 8, 2023
44cf828
Merge pull request #203 from team-winey/fix-splash-less-than-version-12
leeeha Oct 9, 2023
06cba15
Merge pull request #204 from team-winey/release/1.0.0
leeeha Oct 9, 2023
b18375b
[add] #205 위니피드 인스타그램 배너 이미지 추가
sxunea Oct 13, 2023
f527bec
[ui] #205 위니피드 인스타그램 배너 레이아웃 구현
sxunea Oct 13, 2023
bc0938b
[chore] #205 문자열 리소스 추출
sxunea Oct 13, 2023
5ba3406
[add] #206 위니피드 인스타그램 배너 이미지 추가
sxunea Oct 13, 2023
fcf596e
[ui] #205 위니피드 인스타그램 배너 레이아웃 구현
sxunea Oct 13, 2023
1c4fabc
[chore] #205 문자열 리소스 추출
sxunea Oct 13, 2023
aa1ad2b
[chore] #205 인스타 배너 이미지 교체, 글 수정
sxunea Oct 14, 2023
642432c
[feat] #206 첫진입 시, 인스타 배너 뜨게 하고 나머지배너 랜덤으로
sxunea Oct 14, 2023
b246d07
[comment] 마이페이지 목표설정 관련 주석 수정
leeeha Oct 14, 2023
d6c07a4
[feat] #206 위니피드 배너 클릭시 인스타 계정으로 연결
sxunea Oct 14, 2023
0aa9bda
Merge remote-tracking branch 'origin/feature/feat-winey-feed-instaban…
sxunea Oct 14, 2023
77a1739
[del] #206 이름중복 파일 삭제
sxunea Oct 14, 2023
3a58768
[chore] #206 배너 수 상수화
sxunea Oct 14, 2023
187c773
Merge pull request #210 from team-winey/feature/feat-winey-feed-insta…
sxunea Oct 14, 2023
d6eb5e6
[add] #208 release 빌드에 코드 경량화, 난독화 추가
sxunea Oct 14, 2023
1eb183f
Merge pull request #211 from team-winey/feature/add-gradle-R8
sxunea Oct 15, 2023
ff36d9a
Merge pull request #209 from team-winey/feature/comment-mypage-target…
leeeha Oct 15, 2023
446f00e
[refactor] 댓글 추가/삭제에 따라 어댑터 변경하는 함수 모듈화
leeeha Oct 15, 2023
316235f
[mod] #207 위니피드에서 마이페이지 프래그먼트로 전환 시, 바텀시트 바로 뜨도록 변경
leeeha Oct 15, 2023
f6c12bc
[feat] #212 절약 기간 내 목표 달성 시 축하 다이얼로그 띄우기
leeeha Oct 15, 2023
aa33576
[chore] 버전 코드, 버전 이름 업데이트
leeeha Oct 15, 2023
32227e9
[fix] 릴리즈 모드에서 앱이 크래시 되는 문제 때문에 코드/리소스 축소 관련 코드 임시 삭제
leeeha Oct 16, 2023
2a52e29
[chore] 프로덕션 앱 생성을 위해 버전 코드 수정
leeeha Oct 16, 2023
e7ba4c5
[chore] 코드 및 리소스 축소 관련 코드 다시 활성화
leeeha Oct 17, 2023
ab2348d
Merge pull request #213 from team-winey/feature/mod-target-setting-logic
leeeha Oct 17, 2023
a7044de
[docs] 리드미 수정
leeeha Oct 17, 2023
8bafb6b
[docs] 대표 이미지 크기 수정
leeeha Oct 17, 2023
e837724
[add] #214 proguard rules에 직렬화 크래시 방지 코드 추가
sxunea Oct 18, 2023
e736f3f
[chore] #214 새 버전 업데이트를 위한 버전 코드 수정
sxunea Oct 18, 2023
9090edd
[chore] #214 버전이름은 다시 1.0.1으로 유지
sxunea Oct 18, 2023
93b7530
[add] #214 okhttp, retrofit proguard rule 추가
sxunea Oct 18, 2023
0d74912
[chore] #214 1.0.1 출시를 위한 버전코드 업데이트
sxunea Oct 18, 2023
e122230
Merge pull request #215 from team-winey/feature/add-proguard-rules
sxunea Oct 18, 2023
0945864
[refactor] 카카오 로그인 의존성 주입 관련 수정
Sangwook123 Oct 24, 2023
fabd486
[add] 프로가드 룰 추가
Sangwook123 Oct 24, 2023
58bb7fd
[del] #219 사용하지 않는 상수 삭제
leeeha Nov 1, 2023
88c2c5b
[add] #219 릴리즈 모드로 빌드할 때 필요한 키스토어 정보 추가
leeeha Nov 1, 2023
5791a1c
[fix] #219 카카오 디벨로퍼에 업로드키 해시값 등록하여 이슈 해결
leeeha Nov 1, 2023
1af2ee2
Merge pull request #220 from team-winey/feature/fix-kakao-login-proguard
leeeha Nov 4, 2023
63b5699
[fix] #221 댓글 입력창 바깥을 터치했을 때만 키보드가 내려가고 포커스 해제되도록 변경
leeeha Nov 4, 2023
12db817
Merge pull request #222 from team-winey/feature/fix-detail-comment-to…
leeeha Nov 5, 2023
fdd5a84
[chore] 프로덕션 앱 버전 코드 업그레이드
leeeha Nov 5, 2023
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
17 changes: 7 additions & 10 deletions .github/workflows/pr_checker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,24 +45,21 @@ jobs:
AUTH_BASE_URL: ${{ secrets.AUTH_BASE_URL }}
KAKAO_NATIVE_KEY: ${{ secrets.KAKAO_NATIVE_KEY }}
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
run: |
echo auth.base.url=\"$AUTH_BASE_URL\" >> ./local.properties
echo kakao.native.key=\"$KAKAO_NATIVE_KEY\" >> ./local.properties
echo amplitude.api.key=\"$AMPLITUDE_API_KEY\" >> ./local.properties
echo kakaoNativeKey=$KAKAO_NATIVE_KEY >> ./local.properties
echo amplitude.api.key=\"AMPLITUDE_API_KEY\" >> ./local.properties

# - name: Access Firebase Service
# run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json
echo keyAlias=$KEY_ALIAS >> ./local.properties
echo keyPassword=$KEY_PASSWORD >> ./local.properties
echo storePassword=$STORE_PASSWORD >> ./local.properties

- name: Build debug APK
run: ./gradlew assembleDebug --stacktrace

# - name: Upload APK
# uses: actions/upload-artifact@v1
# with:
# name: app
# path: app/build/outputs/apk/debug

- name: Run ktlint
run: ./gradlew ktlintCheck

Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ captures/
# Keystore files
*.jks
*.keystore
*.pem

# Google Services (e.g. APIs or Firebase)
# google-services.json
Expand Down Expand Up @@ -194,4 +195,4 @@ fabric.properties

!/gradle/wrapper/gradle-wrapper.jar

# End of https://www.toptal.com/developers/gitignore/api/windows,androidstudio,kotlin,java
# End of https://www.toptal.com/developers/gitignore/api/windows,androidstudio,kotlin,java
17 changes: 3 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 👑 Winey - AOS 💸

GO SOPT 32기 앱잼 Winey Android 팀 레포입니다.
[GO SOPT](https://www.sopt.org/) 32기 앱잼 Winey Android 팀 레포입니다.

<img width="250" src="https://github.com/team-winey/Winey-AOS/assets/68090939/d9f94086-84f5-4ef2-80b4-acf27b59c21b"/>
<img src="https://github.com/team-winey/Winey-AOS/assets/68090939/a44c2b4e-68e2-40c1-b687-535f323cead8"/>

## 💁 Introduction

Expand All @@ -15,9 +15,7 @@ GO SOPT 32기 앱잼 Winey Android 팀 레포입니다.

한마디로 위니는 '좌충우돌 나만의 절약 방법을 공유하는 게임형 절약 SNS' 서비스입니다.

## 🎉 Play Store Download (v1.0.0)

[구글 플레이 스토어에서 바로 만나보세요 ✔](https://play.google.com/store/apps/details?id=org.go.sopt.winey)
[🎉 구글 플레이 스토어에서 바로 만나보세요! 🎉](https://play.google.com/store/apps/details?id=org.go.sopt.winey)

## 🌱 Contributors

Expand Down Expand Up @@ -113,13 +111,4 @@ https://github.com/team-winey/Winey-AOS/assets/68090939/d190e491-efe5-4a02-89d1-
┃ ┃ ┣ 📂 story
┃ ┣ 📂 splash
┣ 📂 util
┃ ┣ 📂 activity
┃ ┣ 📂 amplitude
┃ ┣ 📂 binding
┃ ┣ 📂 code
┃ ┣ 📂 context
┃ ┣ 📂 fragment
┃ ┣ 📂 intent
┃ ┣ 📂 multipart
┃ ┣ 📂 view
```
17 changes: 14 additions & 3 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,20 @@ android {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

signingConfigs {
create("release") {
keyAlias = gradleLocalProperties(rootDir).getProperty("keyAlias")
keyPassword = gradleLocalProperties(rootDir).getProperty("keyPassword")
storeFile = file("winey.jks")
storePassword = gradleLocalProperties(rootDir).getProperty("storePassword")
}
}

buildTypes {
getByName("release") {
isMinifyEnabled = false
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
Expand All @@ -62,9 +73,9 @@ android {
}

buildFeatures {
buildConfig = true
viewBinding = true
dataBinding = true
buildConfig = true
}
}

Expand Down
73 changes: 72 additions & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,77 @@
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

##---------------Begin: Kakao SDK ----------
-keep class com.kakao.sdk.**.model.* { <fields>; }
-keep class * extends com.google.gson.TypeAdapter
-keep interface com.kakao.sdk.**.*Api
##---------------END: Kakao SDK ----------

##---------------Begin: Retrofit ----------
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
# EnclosingMethod is required to use InnerClasses.
-keepattributes Signature, InnerClasses, EnclosingMethod

# Retrofit does reflection on method and parameter annotations.
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations

# Keep annotation default values (e.g., retrofit2.http.Field.encoded).
-keepattributes AnnotationDefault

# Retain service method parameters when optimizing.
-keepclassmembers,allowshrinking,allowobfuscation interface * {
@retrofit2.http.* <methods>;
}

# Ignore JSR 305 annotations for embedding nullability information.
-dontwarn javax.annotation.**

# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
-dontwarn kotlin.Unit

# Top-level functions that can only be used by Kotlin.
-dontwarn retrofit2.KotlinExtensions
-dontwarn retrofit2.KotlinExtensions$*

# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>

# With R8 full mode generic signatures are stripped for classes that are not
# kept. Suspend functions are wrapped in continuations where the type argument
# is used.
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation

# R8 full mode strips generic signatures from return types if not kept.
-if interface * { @retrofit2.http.* public *** *(...); }
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>

# With R8 full mode generic signatures are stripped for classes that are not kept.
-keep,allowobfuscation,allowshrinking class retrofit2.Response
-keep,allowobfuscation,allowshrinking interface retrofit2.Call

##---------------End: Retrofit ----------

##---------------Begin: OkHttp -------------

# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**

# A resource is loaded with a relative path so the package of this class must be preserved.
-adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz

# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*

# OkHttp platform used only on JVM and when Conscrypt and other security providers are available.
-dontwarn okhttp3.internal.platform.**
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**

##---------------End : OkHttp --------------

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
Expand All @@ -18,4 +89,4 @@

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
#-renamesourcefileattribute SourceFile
4 changes: 2 additions & 2 deletions app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 7,
"versionName": "1.0.0",
"versionCode": 17,
"versionName": "1.0.1",
"outputFile": "app-release.apk"
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,52 @@ package org.go.sopt.winey.data.source

import android.content.Context
import com.kakao.sdk.auth.model.OAuthToken
import com.kakao.sdk.user.UserApiClient
import org.go.sopt.winey.data.service.KakaoLoginService
import javax.inject.Inject

class KakaoLoginDataSource @Inject constructor(
private val kakaoLoginService: KakaoLoginService
) {
fun loginKakao(kakaoLoginCallBack: (OAuthToken?, Throwable?) -> Unit, context: Context) =
kakaoLoginService.loginKakao(kakaoLoginCallBack, context)
private val client: UserApiClient
) : KakaoLoginService {

fun logoutKakao(kakaoLogoutCallBack: (Throwable?) -> Unit) =
kakaoLoginService.logoutKakao(kakaoLogoutCallBack)
override fun loginKakao(
kakaoLoginCallBack: (OAuthToken?, Throwable?) -> Unit,
context: Context
) {
val kakaoLoginState =
if (client.isKakaoTalkLoginAvailable(context)) {
KAKAO_TALK_LOGIN
} else {
KAKAO_ACCOUNT_LOGIN
}

fun deleteKakaoAccount(kakaoLogoutCallBack: (Throwable?) -> Unit) =
kakaoLoginService.deleteKakaoAccount(kakaoLogoutCallBack)
when (kakaoLoginState) {
KAKAO_TALK_LOGIN -> {
client.loginWithKakaoTalk(
context,
callback = kakaoLoginCallBack
)
}

KAKAO_ACCOUNT_LOGIN -> {
client.loginWithKakaoAccount(
context,
callback = kakaoLoginCallBack
)
}
}
}

override fun logoutKakao(kakaoLogoutCallBack: (Throwable?) -> Unit) {
client.logout(kakaoLogoutCallBack)
}

override fun deleteKakaoAccount(kakaoLogoutCallBack: (Throwable?) -> Unit) {
client.unlink(kakaoLogoutCallBack)
}

companion object {
private const val KAKAO_TALK_LOGIN = 0
private const val KAKAO_ACCOUNT_LOGIN = 1
}
}
50 changes: 0 additions & 50 deletions app/src/main/java/org/go/sopt/winey/di/ServiceModule.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package org.go.sopt.winey.di

import android.content.Context
import com.kakao.sdk.auth.model.OAuthToken
import com.kakao.sdk.user.UserApiClient
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import org.go.sopt.winey.data.service.AuthService
import org.go.sopt.winey.data.service.FeedService
import org.go.sopt.winey.data.service.KakaoLoginService
import org.go.sopt.winey.data.service.NotificationService
import org.go.sopt.winey.data.service.RecommendService
import retrofit2.Retrofit
Expand All @@ -18,9 +14,6 @@ import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
object ServiceModule {
private const val KAKAO_TALK_LOGIN = 0
private const val KAKAO_ACCOUNT_LOGIN = 1

@Provides
@Singleton
fun provideAuthService(retrofit: Retrofit): AuthService =
Expand All @@ -40,47 +33,4 @@ object ServiceModule {
@Singleton
fun provideNotificationService(retrofit: Retrofit): NotificationService =
retrofit.create(NotificationService::class.java)

@Provides
fun provideKakaoLoginService(
client: UserApiClient
): KakaoLoginService {
return object : KakaoLoginService {
override fun loginKakao(
kakaoLoginCallBack: (OAuthToken?, Throwable?) -> Unit,
context: Context
) {
val kakaoLoginState =
if (client.isKakaoTalkLoginAvailable(context)) {
KAKAO_TALK_LOGIN
} else {
KAKAO_ACCOUNT_LOGIN
}

when (kakaoLoginState) {
KAKAO_TALK_LOGIN -> {
client.loginWithKakaoTalk(
context,
callback = kakaoLoginCallBack
)
}

KAKAO_ACCOUNT_LOGIN -> {
client.loginWithKakaoAccount(
context,
callback = kakaoLoginCallBack
)
}
}
}

override fun logoutKakao(kakaoLogoutCallBack: (Throwable?) -> Unit) {
client.logout(kakaoLogoutCallBack)
}

override fun deleteKakaoAccount(kakaoLogoutCallBack: (Throwable?) -> Unit) {
client.unlink(kakaoLogoutCallBack)
}
}
}
}
Loading