From a64b64732d419f61d474d25a0080da0bfe8e2542 Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 18:11:47 +0900 Subject: [PATCH 01/13] feat(snsfeed) : add activity to show sns feeds --- .../main/java/com/sinbaram/mapgo/SnsFeedActivity.kt | 11 +++++++++++ client/app/src/main/res/layout/activity_sns_feed.xml | 9 +++++++++ 2 files changed, 20 insertions(+) create mode 100644 client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt create mode 100644 client/app/src/main/res/layout/activity_sns_feed.xml diff --git a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt new file mode 100644 index 0000000..67dc485 --- /dev/null +++ b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt @@ -0,0 +1,11 @@ +package com.sinbaram.mapgo + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle + +class SnsFeedActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_sns_feed) + } +} \ No newline at end of file diff --git a/client/app/src/main/res/layout/activity_sns_feed.xml b/client/app/src/main/res/layout/activity_sns_feed.xml new file mode 100644 index 0000000..1b43c94 --- /dev/null +++ b/client/app/src/main/res/layout/activity_sns_feed.xml @@ -0,0 +1,9 @@ + + + + From f03d0b997b4c0994efb81c216ee32edf3a88bb82 Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 18:49:51 +0900 Subject: [PATCH 02/13] feat(snsfeed) : add data class(es) to receive sns feed --- .../java/com/sinbaram/mapgo/Model/PostFeed.kt | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeed.kt diff --git a/client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeed.kt b/client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeed.kt new file mode 100644 index 0000000..23563af --- /dev/null +++ b/client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeed.kt @@ -0,0 +1,49 @@ +package com.sinbaram.mapgo.Model + +import java.io.Serializable + +class PostFeed : ArrayList() + +data class PostFeedItem( + val comment: ArrayList, + val contents: String, + val like: List, + val location: Location, + val postID: Int, + val postImage: List, + val postTime: String, + val totalLikes: Int, + val writer: Writer +) : Serializable + +class CommentResponse : ArrayList() + +data class Comment( + val writer: Writer, + val contents: String, + val post: Int +) : Serializable + +data class Location( + val lat: Double, + val lng: Double +) : Serializable + +data class Writer( + val deviceID: String, + val id: Int, + val picture: String, + val username: String +) : Serializable + +data class PostImage( + val image: String, + val post: Int +) : Serializable + +class LikeResponse : ArrayList() + +data class Like( + val liker: Int, + val post: Int +) : Serializable From 433b772d9d763c248fb1ac524b2f1c162fe3e775 Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 19:39:04 +0900 Subject: [PATCH 03/13] feat(snsfeed) : add gsonconverter --- client/app/build.gradle | 3 ++- .../app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt | 2 ++ .../src/main/java/com/sinbaram/mapgo/API/ServerClient.kt | 4 ++++ .../sinbaram/mapgo/Model/{PostFeed.kt => PostFeedItem.kt} | 8 +------- 4 files changed, 9 insertions(+), 8 deletions(-) rename client/app/src/main/java/com/sinbaram/mapgo/Model/{PostFeed.kt => PostFeedItem.kt} (82%) diff --git a/client/app/build.gradle b/client/app/build.gradle index 2d006e2..981fa01 100644 --- a/client/app/build.gradle +++ b/client/app/build.gradle @@ -53,6 +53,7 @@ dependencies { // Retrofit2 for REST API implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-moshi:2.9.0' + implementation 'com.squareup.retrofit2:converter-gson:2.6.2' // 네이버 지도 SDK implementation 'com.naver.maps:map-sdk:3.12.0' // Obj - a simple Wavefront OBJ file loader @@ -67,4 +68,4 @@ dependencies { implementation("com.gorisse.thomas.sceneform:sceneform:1.19.5") // Google Location Service implementation 'com.google.android.gms:play-services-location:16.0.0' -} \ No newline at end of file +} diff --git a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt index e4da655..e5c43e7 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt @@ -3,6 +3,7 @@ package com.sinbaram.mapgo.API import com.sinbaram.mapgo.BuildConfig import retrofit2.converter.moshi.MoshiConverterFactory import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory /** Retrofit2 singleton instance for mapgo server */ object ServerAPI { @@ -13,6 +14,7 @@ object ServerAPI { retrofit = Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(MoshiConverterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) .build() } return retrofit diff --git a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt index 0a82276..20ac242 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt @@ -3,6 +3,7 @@ package com.sinbaram.mapgo.API import com.sinbaram.mapgo.Model.CheckInResponse import com.sinbaram.mapgo.Model.CheckInRequest import com.sinbaram.mapgo.Model.Recommendation +import com.sinbaram.mapgo.Model.PostFeedItem import retrofit2.http.Body import retrofit2.http.GET import retrofit2.http.Headers @@ -34,4 +35,7 @@ interface ServerClient { @Query("epsilon") epsilon: Int, @Query("keywords") keywords: String ): Call> + + @GET("Mapgo/sns/post/") + fun GetPosts() : Call> } diff --git a/client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeed.kt b/client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeedItem.kt similarity index 82% rename from client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeed.kt rename to client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeedItem.kt index 23563af..87be1dc 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeed.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/Model/PostFeedItem.kt @@ -2,10 +2,8 @@ package com.sinbaram.mapgo.Model import java.io.Serializable -class PostFeed : ArrayList() - data class PostFeedItem( - val comment: ArrayList, + val comment: List, val contents: String, val like: List, val location: Location, @@ -16,8 +14,6 @@ data class PostFeedItem( val writer: Writer ) : Serializable -class CommentResponse : ArrayList() - data class Comment( val writer: Writer, val contents: String, @@ -41,8 +37,6 @@ data class PostImage( val post: Int ) : Serializable -class LikeResponse : ArrayList() - data class Like( val liker: Int, val post: Int From 278134bbd57a41761f345d3d39df27800e3cd56d Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 19:46:06 +0900 Subject: [PATCH 04/13] feat(snsfeed) : add data load from sns post object --- .../com/sinbaram/mapgo/SnsFeedActivity.kt | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt index 67dc485..902d884 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt @@ -2,10 +2,35 @@ package com.sinbaram.mapgo import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log +import com.sinbaram.mapgo.Model.PostFeedItem class SnsFeedActivity : AppCompatActivity() { + val baseurl = BuildConfig.SERVER_ADDRESS + val postImageList = mutableListOf() + val commentList = mutableListOf>() + val likerList = mutableListOf() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_sns_feed) + + // load sns post's data + val postInfo = intent.getSerializableExtra("data") as PostFeedItem + val postId : Int = postInfo.postID + val writerName : String = postInfo.writer.username + val writerImage : String = baseurl + postInfo.writer.picture + val postcontent : String = postInfo.contents + val postLat : Double = postInfo.location.lat + val postLong : Double = postInfo.location.lng + val postTime : String = postInfo.postTime.split(".")[0].replace("T", " ") + val liker = postInfo.like + for (likeobj in liker) { + likerList += likeobj.liker + } + for (imageobj in postInfo.postImage) { + postImageList += baseurl + imageobj.image + } + + //Log.d("outputtest", postId.toString()+" "+writerName+" "+writerImage+" "+postcontent+" "+postcontent+" "+postImageList+" "+postLat+" "+postLong+" "+postTime) } -} \ No newline at end of file +} From 4671be44e8cced0bab7f5a7462d641df965b3015 Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 20:03:46 +0900 Subject: [PATCH 05/13] feat(snsfeed) : add post author on the sns feed --- client/app/build.gradle | 2 + .../com/sinbaram/mapgo/SnsFeedActivity.kt | 11 ++++ .../src/main/res/layout/activity_sns_feed.xml | 57 +++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/client/app/build.gradle b/client/app/build.gradle index 981fa01..dbc3e0a 100644 --- a/client/app/build.gradle +++ b/client/app/build.gradle @@ -68,4 +68,6 @@ dependencies { implementation("com.gorisse.thomas.sceneform:sceneform:1.19.5") // Google Location Service implementation 'com.google.android.gms:play-services-location:16.0.0' + // Glide Image loading framework + implementation 'com.github.bumptech.glide:glide:4.12.0' } diff --git a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt index 902d884..7006551 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt @@ -3,6 +3,9 @@ package com.sinbaram.mapgo import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log +import android.widget.ImageView +import android.widget.TextView +import com.bumptech.glide.Glide import com.sinbaram.mapgo.Model.PostFeedItem class SnsFeedActivity : AppCompatActivity() { @@ -31,6 +34,14 @@ class SnsFeedActivity : AppCompatActivity() { postImageList += baseurl + imageobj.image } + val userName = findViewById(R.id.userName) + val userimage = findViewById(R.id.userImage) + val posttime = findViewById(R.id.postTime) + + userName.setText(writerName) + posttime.setText(postTime) + Glide.with(this).load(writerImage).into(userimage) + //Log.d("outputtest", postId.toString()+" "+writerName+" "+writerImage+" "+postcontent+" "+postcontent+" "+postImageList+" "+postLat+" "+postLong+" "+postTime) } } diff --git a/client/app/src/main/res/layout/activity_sns_feed.xml b/client/app/src/main/res/layout/activity_sns_feed.xml index 1b43c94..6df86c5 100644 --- a/client/app/src/main/res/layout/activity_sns_feed.xml +++ b/client/app/src/main/res/layout/activity_sns_feed.xml @@ -6,4 +6,61 @@ android:layout_height="match_parent" tools:context=".SnsFeedActivity"> + + + + + + + + + + + + + + + From fc305151f3f9b2cfe7497c8c36aef1e445e027c7 Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 20:15:31 +0900 Subject: [PATCH 06/13] feat(snsfeed) : add content, post images on the sns feed --- .../com/sinbaram/mapgo/ImageSliderAdapter.kt | 25 +++++++++++++++++++ .../com/sinbaram/mapgo/SnsFeedActivity.kt | 8 ++++++ .../src/main/res/layout/activity_sns_feed.xml | 24 ++++++++++++++++++ .../src/main/res/layout/image_viewpager.xml | 15 +++++++++++ 4 files changed, 72 insertions(+) create mode 100644 client/app/src/main/java/com/sinbaram/mapgo/ImageSliderAdapter.kt create mode 100644 client/app/src/main/res/layout/image_viewpager.xml diff --git a/client/app/src/main/java/com/sinbaram/mapgo/ImageSliderAdapter.kt b/client/app/src/main/java/com/sinbaram/mapgo/ImageSliderAdapter.kt new file mode 100644 index 0000000..cc238fd --- /dev/null +++ b/client/app/src/main/java/com/sinbaram/mapgo/ImageSliderAdapter.kt @@ -0,0 +1,25 @@ +package com.sinbaram.mapgo + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.ImageView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide + +class ImageSliderAdapter(val context: Context, imageList: MutableList) : RecyclerView.Adapter() { + var imagelist = imageList + inner class PagerViewHolder(parent: ViewGroup) : RecyclerView.ViewHolder + (LayoutInflater.from(parent.context).inflate(R.layout.image_viewpager, parent, false)) { + val image = itemView.findViewById(R.id.imageView) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = PagerViewHolder((parent)) + + override fun onBindViewHolder(holder: PagerViewHolder, position: Int) { + Glide.with(context).load(imagelist[position]).into(holder.image) + + } + + override fun getItemCount(): Int = imagelist.size +} diff --git a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt index 7006551..b5f5175 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.util.Log import android.widget.ImageView import android.widget.TextView +import androidx.viewpager2.widget.ViewPager2 import com.bumptech.glide.Glide import com.sinbaram.mapgo.Model.PostFeedItem @@ -13,6 +14,7 @@ class SnsFeedActivity : AppCompatActivity() { val postImageList = mutableListOf() val commentList = mutableListOf>() val likerList = mutableListOf() + lateinit var viewpager : ViewPager2 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_sns_feed) @@ -34,13 +36,19 @@ class SnsFeedActivity : AppCompatActivity() { postImageList += baseurl + imageobj.image } + // load views from activity_sns_feed val userName = findViewById(R.id.userName) val userimage = findViewById(R.id.userImage) val posttime = findViewById(R.id.postTime) + val content = findViewById(R.id.content) + viewpager = findViewById(R.id.imageSlider) + // set post's username, user image, post time, content userName.setText(writerName) posttime.setText(postTime) + content.setText(postcontent) Glide.with(this).load(writerImage).into(userimage) + viewpager.adapter = ImageSliderAdapter(this, postImageList) //Log.d("outputtest", postId.toString()+" "+writerName+" "+writerImage+" "+postcontent+" "+postcontent+" "+postImageList+" "+postLat+" "+postLong+" "+postTime) } diff --git a/client/app/src/main/res/layout/activity_sns_feed.xml b/client/app/src/main/res/layout/activity_sns_feed.xml index 6df86c5..9653296 100644 --- a/client/app/src/main/res/layout/activity_sns_feed.xml +++ b/client/app/src/main/res/layout/activity_sns_feed.xml @@ -60,6 +60,30 @@ app:layout_constraintTop_toTopOf="parent" tools:srcCompat="@tools:sample/avatars" /> + + + + + + diff --git a/client/app/src/main/res/layout/image_viewpager.xml b/client/app/src/main/res/layout/image_viewpager.xml new file mode 100644 index 0000000..af88381 --- /dev/null +++ b/client/app/src/main/res/layout/image_viewpager.xml @@ -0,0 +1,15 @@ + + + + + From aac69abd9b8456be082bd279506c563c97a6fc70 Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 20:42:42 +0900 Subject: [PATCH 07/13] feat(snsfeed) : add comments on the sns feed --- .../com/sinbaram/mapgo/API/ServerClient.kt | 9 ++++ .../sinbaram/mapgo/CommentRecyclerAdapter.kt | 53 +++++++++++++++++++ .../com/sinbaram/mapgo/SnsFeedActivity.kt | 42 +++++++++++++++ .../src/main/res/layout/activity_sns_feed.xml | 12 +++++ .../src/main/res/layout/comment_recycler.xml | 50 +++++++++++++++++ 5 files changed, 166 insertions(+) create mode 100644 client/app/src/main/java/com/sinbaram/mapgo/CommentRecyclerAdapter.kt create mode 100644 client/app/src/main/res/layout/comment_recycler.xml diff --git a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt index 20ac242..464a928 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt @@ -4,11 +4,13 @@ import com.sinbaram.mapgo.Model.CheckInResponse import com.sinbaram.mapgo.Model.CheckInRequest import com.sinbaram.mapgo.Model.Recommendation import com.sinbaram.mapgo.Model.PostFeedItem +import com.sinbaram.mapgo.Model.Comment import retrofit2.http.Body import retrofit2.http.GET import retrofit2.http.Headers import retrofit2.http.POST import retrofit2.http.Query +import retrofit2.http.Path import retrofit2.Call /** Collections of naver openapi search interface */ @@ -36,6 +38,13 @@ interface ServerClient { @Query("keywords") keywords: String ): Call> + /** Get posts from mapgo server */ @GET("Mapgo/sns/post/") fun GetPosts() : Call> + + /** Get comments from post with {id} */ + @GET("Mapgo/sns/post/{id}/comment/") + fun GetComments( + @Path("id") id: Int + ) : Call> } diff --git a/client/app/src/main/java/com/sinbaram/mapgo/CommentRecyclerAdapter.kt b/client/app/src/main/java/com/sinbaram/mapgo/CommentRecyclerAdapter.kt new file mode 100644 index 0000000..6535e47 --- /dev/null +++ b/client/app/src/main/java/com/sinbaram/mapgo/CommentRecyclerAdapter.kt @@ -0,0 +1,53 @@ +package com.sinbaram.mapgo + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide + +class CommentRecyclerAdapter internal constructor(var context: Context, list: MutableList>?) : + RecyclerView.Adapter() { + private var mData: MutableList>? = null + + inner class ViewHolder internal constructor(itemView: View) : + RecyclerView.ViewHolder(itemView) { + var content: TextView + var writer: TextView + var image: ImageView + + init { + content = itemView.findViewById(R.id.commentContent) + writer = itemView.findViewById(R.id.commentWriter) + image = itemView.findViewById(R.id.commentImage) + } + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): ViewHolder { + val context: Context = parent.context + val inflater = + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater + val view: View = inflater.inflate(R.layout.comment_recycler, parent, false) + return ViewHolder(view) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.writer.text = mData!![position]["writer"] + holder.content.text = mData!![position]["contents"] + Glide.with(context).load(mData!![position]["writerImage"]).into(holder.image) + } + + override fun getItemCount(): Int { + return mData!!.size + } + + init { + mData = list + } +} diff --git a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt index b5f5175..670a2c9 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt @@ -1,13 +1,22 @@ package com.sinbaram.mapgo +import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widget.ImageView import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import com.bumptech.glide.Glide +import com.sinbaram.mapgo.API.ServerAPI +import com.sinbaram.mapgo.API.ServerClient +import com.sinbaram.mapgo.Model.Comment import com.sinbaram.mapgo.Model.PostFeedItem +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response class SnsFeedActivity : AppCompatActivity() { val baseurl = BuildConfig.SERVER_ADDRESS @@ -15,6 +24,7 @@ class SnsFeedActivity : AppCompatActivity() { val commentList = mutableListOf>() val likerList = mutableListOf() lateinit var viewpager : ViewPager2 + lateinit var recycler : RecyclerView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_sns_feed) @@ -50,6 +60,38 @@ class SnsFeedActivity : AppCompatActivity() { Glide.with(this).load(writerImage).into(userimage) viewpager.adapter = ImageSliderAdapter(this, postImageList) + recycler = findViewById(R.id.commentRecycler) + recycler.layoutManager = LinearLayoutManager(this) + recycler.setHasFixedSize(false) + getPostComment(postId) + //Log.d("outputtest", postId.toString()+" "+writerName+" "+writerImage+" "+postcontent+" "+postcontent+" "+postImageList+" "+postLat+" "+postLong+" "+postTime) } + + fun getPostComment(postId : Int) { + commentList.clear() + val serverAPI = ServerAPI.GetClient()!!.create(ServerClient::class.java) + val apiCall : Call> = serverAPI.GetComments(postId) + apiCall.enqueue(object: Callback> { + override fun onResponse(call: Call>, response: Response>) { + if (response.code() == 200) { + var commentResponseList : List + commentResponseList = response.body()!! + for (commentObj in commentResponseList) { + val commentMap = mapOf("writer" to commentObj.writer.username, "writerImage" to baseurl+commentObj.writer.picture, "contents" to commentObj.contents) + commentList += commentMap + } + recycler.adapter = null + recycler.layoutManager = null + val adapter = CommentRecyclerAdapter(this@SnsFeedActivity, commentList) + recycler.adapter = adapter + recycler.layoutManager = LinearLayoutManager(this@SnsFeedActivity) + } + } + + override fun onFailure(call: Call>, t: Throwable) { + Log.d(MapGoActivity.TAG, "Failed to get comments : "+t.toString()) + } + }) + } } diff --git a/client/app/src/main/res/layout/activity_sns_feed.xml b/client/app/src/main/res/layout/activity_sns_feed.xml index 9653296..831c0fb 100644 --- a/client/app/src/main/res/layout/activity_sns_feed.xml +++ b/client/app/src/main/res/layout/activity_sns_feed.xml @@ -84,6 +84,18 @@ app:layout_constraintTop_toBottomOf="@+id/content" > + + diff --git a/client/app/src/main/res/layout/comment_recycler.xml b/client/app/src/main/res/layout/comment_recycler.xml new file mode 100644 index 0000000..ae01aff --- /dev/null +++ b/client/app/src/main/res/layout/comment_recycler.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + From c2d9867c428000888034b90ee9ea0ef895ef5c9b Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 21:29:40 +0900 Subject: [PATCH 08/13] feat(snsfeed) : add ServerPostAPI Existing ServerAPI with MoshiConverterFactory was not suitable for SNS Post, so added ServerPostAPI containing Scalars, Gson ConverterFactory --- client/app/build.gradle | 1 + .../java/com/sinbaram/mapgo/API/ServerAPI.kt | 2 -- .../com/sinbaram/mapgo/API/ServerPostAPI.kt | 21 +++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 client/app/src/main/java/com/sinbaram/mapgo/API/ServerPostAPI.kt diff --git a/client/app/build.gradle b/client/app/build.gradle index dbc3e0a..d9f11ac 100644 --- a/client/app/build.gradle +++ b/client/app/build.gradle @@ -54,6 +54,7 @@ dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-moshi:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.6.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.9.0' // 네이버 지도 SDK implementation 'com.naver.maps:map-sdk:3.12.0' // Obj - a simple Wavefront OBJ file loader diff --git a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt index e5c43e7..e4da655 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerAPI.kt @@ -3,7 +3,6 @@ package com.sinbaram.mapgo.API import com.sinbaram.mapgo.BuildConfig import retrofit2.converter.moshi.MoshiConverterFactory import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory /** Retrofit2 singleton instance for mapgo server */ object ServerAPI { @@ -14,7 +13,6 @@ object ServerAPI { retrofit = Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(MoshiConverterFactory.create()) - .addConverterFactory(GsonConverterFactory.create()) .build() } return retrofit diff --git a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerPostAPI.kt b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerPostAPI.kt new file mode 100644 index 0000000..e23e5d0 --- /dev/null +++ b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerPostAPI.kt @@ -0,0 +1,21 @@ +package com.sinbaram.mapgo.API + +import com.sinbaram.mapgo.BuildConfig +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import retrofit2.converter.scalars.ScalarsConverterFactory + +object ServerPostAPI { + var BASE_URL: String = BuildConfig.SERVER_ADDRESS + var retrofit: Retrofit? = null + fun GetSnsClient(): Retrofit? { + if (retrofit == null) { + retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) + .build() + } + return retrofit + } +} From efeb8e1ec34d6c50ec7fa041306a1c5d419d7d4a Mon Sep 17 00:00:00 2001 From: lijm1358 Date: Wed, 1 Sep 2021 21:30:44 +0900 Subject: [PATCH 09/13] feat(snsfeed) : add uploading comment function on the sns feed --- .../com/sinbaram/mapgo/API/ServerClient.kt | 10 +++++ .../com/sinbaram/mapgo/SnsFeedActivity.kt | 39 +++++++++++++++---- .../src/main/res/layout/activity_sns_feed.xml | 26 ++++++++++++- 3 files changed, 67 insertions(+), 8 deletions(-) diff --git a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt index 464a928..fde3746 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/API/ServerClient.kt @@ -11,6 +11,8 @@ import retrofit2.http.Headers import retrofit2.http.POST import retrofit2.http.Query import retrofit2.http.Path +import retrofit2.http.Multipart +import retrofit2.http.Part import retrofit2.Call /** Collections of naver openapi search interface */ @@ -47,4 +49,12 @@ interface ServerClient { fun GetComments( @Path("id") id: Int ) : Call> + + @Multipart + @POST("Mapgo/sns/post/{id}/comment/") + fun PostComment( + @Path("id") id: Int, + @Part("writer") writer: Int, + @Part("contents") contents: String + ) : Call } diff --git a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt index 670a2c9..29ce20a 100644 --- a/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt +++ b/client/app/src/main/java/com/sinbaram/mapgo/SnsFeedActivity.kt @@ -4,14 +4,15 @@ import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log -import android.widget.ImageView -import android.widget.TextView +import android.view.View +import android.widget.* import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import com.bumptech.glide.Glide import com.sinbaram.mapgo.API.ServerAPI import com.sinbaram.mapgo.API.ServerClient +import com.sinbaram.mapgo.API.ServerPostAPI import com.sinbaram.mapgo.Model.Comment import com.sinbaram.mapgo.Model.PostFeedItem import retrofit2.Call @@ -19,10 +20,12 @@ import retrofit2.Callback import retrofit2.Response class SnsFeedActivity : AppCompatActivity() { + val userId : Int = 1 // this value will get from MapGoActivity val baseurl = BuildConfig.SERVER_ADDRESS val postImageList = mutableListOf() val commentList = mutableListOf>() val likerList = mutableListOf() + val serverAPI = ServerPostAPI.GetSnsClient()!!.create(ServerClient::class.java) lateinit var viewpager : ViewPager2 lateinit var recycler : RecyclerView override fun onCreate(savedInstanceState: Bundle?) { @@ -52,30 +55,37 @@ class SnsFeedActivity : AppCompatActivity() { val posttime = findViewById(R.id.postTime) val content = findViewById(R.id.content) viewpager = findViewById(R.id.imageSlider) + val commentButton = findViewById