Skip to content

Commit

Permalink
Merge pull request #11 from NOW-SOPT-ANDROID/feat/week_compose4
Browse files Browse the repository at this point in the history
week4: 4차 필수과제 진행(Compose)
  • Loading branch information
SYAAINN authored May 24, 2024
2 parents 19f065f + 33d5f36 commit 17176ae
Show file tree
Hide file tree
Showing 18 changed files with 170 additions and 13 deletions.
17 changes: 17 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.0'
}

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

android {
namespace 'com.sopt.now.compose'
compileSdk 34
Expand All @@ -18,6 +22,7 @@ android {
vectorDrawables {
useSupportLibrary true
}
buildConfigField "String", "AUTH_BASE_URL", properties["base.url"]
}

buildTypes {
Expand All @@ -35,6 +40,7 @@ android {
}
buildFeatures {
compose true
buildConfig true
}
composeOptions {
kotlinCompilerExtensionVersion '1.5.1'
Expand Down Expand Up @@ -64,4 +70,15 @@ dependencies {
androidTestImplementation 'androidx.compose.ui:ui-test-junit4'
debugImplementation 'androidx.compose.ui:ui-tooling'
debugImplementation 'androidx.compose.ui:ui-test-manifest'

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1'
implementation 'com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0'

// define a BOM and its version
implementation(platform("com.squareup.okhttp3:okhttp-bom:4.10.0"))

// define any required OkHttp artifacts without version
implementation("com.squareup.okhttp3:okhttp")
implementation("com.squareup.okhttp3:logging-interceptor")
}
5 changes: 4 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
Expand All @@ -11,9 +13,10 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.NOWSOPTAndroid"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:name=".main.MainActivity"
android:exported="true"
android:theme="@style/Theme.NOWSOPTAndroid">
<intent-filter>
Expand Down
25 changes: 25 additions & 0 deletions app/src/main/java/com/sopt/now/compose/ApiFactory.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.sopt.now.compose

import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import com.sopt.now.BuildConfig
import com.sopt.now.compose.service.AuthService
import kotlinx.serialization.json.Json
import okhttp3.MediaType.Companion.toMediaType
import retrofit2.Retrofit

object ApiFactory {
private const val BASE_URL: String = BuildConfig.AUTH_BASE_URL

val retrofit: Retrofit by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
.build()
}

inline fun <reified T> create(): T = retrofit.create(T::class.java)
}

object ServicePool {
val authService = ApiFactory.create<AuthService>()
}
6 changes: 3 additions & 3 deletions app/src/main/java/com/sopt/now/compose/Scaffold.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp
import com.sopt.now.compose.home.HomeScreen
import com.sopt.now.compose.mypage.MyPageScreen
import com.sopt.now.compose.search.SearchScreen
import com.sopt.now.compose.main.home.HomeScreen
import com.sopt.now.compose.main.mypage.MyPageScreen
import com.sopt.now.compose.main.search.SearchScreen

data class BottomNavigationItem(
val icon: ImageVector,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.sopt.now.compose
package com.sopt.now.compose.main

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.sopt.now.compose.Scaffold
import com.sopt.now.compose.signIn.SignInScreen
import com.sopt.now.compose.signUp.SignUpScreen

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package com.sopt.now.compose.home
package com.sopt.now.compose.main.home

import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.sopt.now.compose.R

@Preview
@Composable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.now.compose.home
package com.sopt.now.compose.main.home

import com.sopt.now.compose.R

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.now.compose.home
package com.sopt.now.compose.main.home

import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.now.compose.mypage
package com.sopt.now.compose.main.mypage

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.now.compose.search
package com.sopt.now.compose.main.search

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/java/com/sopt/now/compose/request/RequestSignInDto.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.sopt.now.compose.request

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class RequestSignInDto(
@SerialName("authenticationId")
val authenticationId: String,
@SerialName("password")
val password: String
)
16 changes: 16 additions & 0 deletions app/src/main/java/com/sopt/now/compose/request/RequestSignUpDto.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.sopt.now.compose.request

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class RequestSignUpDto(
@SerialName("authenticationId")
val authenticationId: String,
@SerialName("password")
val password: String,
@SerialName("nickname")
val nickname: String,
@SerialName("phone")
val phone: String,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.sopt.now.compose.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ResponseSignInDto(
@SerialName("code")
val code: Int,
@SerialName("message")
val message: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.sopt.now.compose.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ResponseSignUpDto(
@SerialName("code")
val code: Int,
@SerialName("message")
val message: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.sopt.now.compose.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ResponseUserInfoDto (
@SerialName("code")
val code: Int,
@SerialName("message")
val message: String,
@SerialName("data")
val data : UserInfo
)
@Serializable
data class UserInfo (
@SerialName("authenticationId")
val authenticationId: String,
@SerialName("nickname")
val nickname: String,
@SerialName("phone")
val phone: String
)
29 changes: 29 additions & 0 deletions app/src/main/java/com/sopt/now/compose/service/AuthService.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.sopt.now.compose.service

import com.sopt.now.compose.request.RequestSignInDto
import com.sopt.now.compose.request.RequestSignUpDto
import com.sopt.now.compose.response.ResponseSignInDto
import com.sopt.now.compose.response.ResponseSignUpDto
import com.sopt.now.compose.response.ResponseUserInfoDto
import retrofit2.Call
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.POST

interface AuthService {
@POST("member/join") //http 메소드
fun signUp(
@Body request: RequestSignUpDto
): Call<ResponseSignUpDto> //비동기->callback

@POST("member/login")
fun signIn(
@Body request : RequestSignInDto
) : Call<ResponseSignInDto>

@GET("/member/info")
fun getUserInfo(
@Header("memberId") userId : Int
) : Call<ResponseUserInfoDto>
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.now.compose
package com.sopt.now.compose.signIn

import android.content.Context
import androidx.compose.foundation.layout.Arrangement
Expand Down Expand Up @@ -29,6 +29,9 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.navigation.NavController
import com.sopt.now.compose.R
import com.sopt.now.compose.SOPTOutlinedButton
import com.sopt.now.compose.showToast

@Composable
fun SignInScreen(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.now.compose
package com.sopt.now.compose.signUp

import android.content.Context
import androidx.compose.foundation.layout.Arrangement
Expand Down Expand Up @@ -31,6 +31,9 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.navigation.NavController
import com.sopt.now.compose.R
import com.sopt.now.compose.SOPTOutlinedButton
import com.sopt.now.compose.showToast

@Composable
fun SignUpScreen(navController: NavController) {
Expand Down

0 comments on commit 17176ae

Please sign in to comment.