diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2791464..17e4369 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -41,8 +41,9 @@ implementation(libs.constraintlayout) implementation(libs.legacy.support.v4) implementation(libs.recyclerview) + implementation(libs.retrofit2.retrofit) + implementation(libs.converter.jackson) testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) - implementation(libs.retrofit) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aa8e72b..041ace3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,7 +31,7 @@ diff --git a/app/src/main/java/com/example/tampopo_client/MainActivity.java b/app/src/main/java/com/example/tampopo_client/MainActivity.java deleted file mode 100644 index 8700a7e..0000000 --- a/app/src/main/java/com/example/tampopo_client/MainActivity.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.example.tampopo_client; - -import android.os.Bundle; - -import androidx.activity.EdgeToEdge; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.graphics.Insets; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; - -public class MainActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - EdgeToEdge.enable(this); - setContentView(R.layout.activity_main); - ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { - Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); - v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); - return insets; - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/models/FriendPair.java b/app/src/main/java/com/example/tampopo_client/models/FriendPair.java new file mode 100644 index 0000000..4f9c35f --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/models/FriendPair.java @@ -0,0 +1,36 @@ +package com.example.tampopo_client.models; + +public class FriendPair { + private Integer id; + private String user0Id; + private String user1Id; + + public FriendPair(String user0Id, String user1Id) { + this.user0Id = user0Id; + this.user1Id = user1Id; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUser0Id() { + return user0Id; + } + + public void setUser0Id(String user0Id) { + this.user0Id = user0Id; + } + + public String getUser1Id() { + return user1Id; + } + + public void setUser1Id(String user1Id) { + this.user1Id = user1Id; + } +} diff --git a/app/src/main/java/com/example/tampopo_client/resources/FriendsResource.java b/app/src/main/java/com/example/tampopo_client/resources/FriendsResource.java new file mode 100644 index 0000000..c390536 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/resources/FriendsResource.java @@ -0,0 +1,34 @@ +package com.example.tampopo_client.resources; + +import com.example.tampopo_client.models.FriendPair; + +import retrofit2.Call; +import retrofit2.http.DELETE; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.Path; +import retrofit2.http.Query; + +public interface FriendsResource { + @FormUrlEncoded + @POST("friends") + Call postFriends( + @Field("token") String token, + @Field("user0-id") String user0Id, + @Field("user1-id") String user1Id + ); + + @GET("friends/{pair_id}/") + Call getFriend( + @Query("token") String token, + @Path("pair_id") String pairId + ); + + @DELETE("friends/{pair_id}/") + void deleteFriend( + @Query("token") String token, + @Path("pair_id") String pair_id + ); +} diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java new file mode 100644 index 0000000..b85f756 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java @@ -0,0 +1,22 @@ +package com.example.tampopo_client.viewmodels; + +import androidx.lifecycle.ViewModel; + +import com.example.tampopo_client.resources.FriendsResource; + +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class FriendViewModel extends ViewModel { + + private final Retrofit retrofit; + private final FriendsResource friendsResource; + + public FriendViewModel(){ + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo-server/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + this.friendsResource = retrofit.create(FriendsResource.class); + } +} diff --git a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java new file mode 100644 index 0000000..e9a31b3 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java @@ -0,0 +1,26 @@ +package com.example.tampopo_client.views; + +import android.os.Bundle; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import com.example.tampopo_client.R; + +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_main); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + } +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cbc4758..7db8943 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,6 +10,8 @@ legacySupportV4 = "1.0.0" recyclerview = "1.3.2" retrofit = "3.1.0-SNAPSHOT" +retrofitVersion = "3.0.0" +converterJackson = "3.0.0" [libraries] junit = { group = "junit", name = "junit", version.ref = "junit" } @@ -22,6 +24,8 @@ legacy-support-v4 = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "legacySupportV4" } recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "recyclerview" } retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } +retrofit2-retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofitVersion" } +converter-jackson = { group = "com.squareup.retrofit2", name = "converter-jackson", version.ref = "converterJackson" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }