From 94967caf988dffccb8b4c4a5b8955f94bd4709b9 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 12 Dec 2022 22:58:45 +0100 Subject: Omogucena pretraga pracenja i pratioca. Dodat searchbar. Promenjen adapter sa horizontalnog u vertikalni. --- .../Fragments/FragmentUserFollowers.kt | 71 ++++++++++++++++++++-- .../Fragments/FragmentUserFollowing.kt | 65 +++++++++++++++++++- .../main/res/layout/fragment_user_followers.xml | 46 +++++++++++++- .../main/res/layout/fragment_user_following.xml | 46 +++++++++++++- 4 files changed, 214 insertions(+), 14 deletions(-) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt index 376517c..fe2dce3 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt @@ -1,30 +1,37 @@ package com.example.brzodolokacije.Fragments import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher import android.util.Log -import androidx.fragment.app.Fragment +import android.view.KeyEvent import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AutoCompleteTextView +import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Adapters.FollowersAdapter -import com.example.brzodolokacije.Adapters.ShowPostsHomePageAdapter -import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.Models.UserReceive import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper +import com.google.android.material.button.MaterialButton import retrofit2.Call import retrofit2.Callback import retrofit2.Response + class FragmentUserFollowers : Fragment() { private lateinit var followers:MutableList + private lateinit var searchedFollowers:MutableList private lateinit var rvFollowers:RecyclerView private lateinit var userId:String private lateinit var showMy:String + private lateinit var searchBar:AutoCompleteTextView + private lateinit var searchButton:MaterialButton override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -37,6 +44,8 @@ class FragmentUserFollowers : Fragment() { userId = bundle!!.getString("userId").toString() showMy = bundle!!.getString("showMy").toString().trim() rvFollowers=view.findViewById(R.id.rvFragmentUserFollowers) + searchBar=view.findViewById(R.id.FragmentFollowersSearchBar) + searchButton=view.findViewById(R.id.FragmentFollowersSearchBButton) if(showMy=="yes"){ getFollowersWithoutId() @@ -44,9 +53,61 @@ class FragmentUserFollowers : Fragment() { else if(showMy=="no") { getFollowers() } + searchButton.setOnClickListener { + searchText() + } + searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button + if (event.action === KeyEvent.ACTION_DOWN && + keyCode == KeyEvent.KEYCODE_ENTER + ) { + // Perform action on key press + searchText() + return@OnKeyListener true + } + false + }) + + searchBar.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + } + + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + searchText() + if(count==0) + if(showMy=="yes"){ + getFollowersWithoutId() + } + else if(showMy=="no") { + getFollowers() + } + } + + override fun afterTextChanged(s: Editable) { + } + }) return view } + fun searchText(){ + if(searchBar.text==null || searchBar.text.isNullOrEmpty() || searchBar.text.toString().trim()=="") + return + var text=searchBar.text.toString().trim() + searchedFollowers= mutableListOf() + for(user in followers){ + if(user.username.contains(text)) + searchedFollowers.add(user) + } + rvFollowers.apply { + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) + adapter= FollowersAdapter(searchedFollowers,requireActivity()) + + } + + + + + } + fun getFollowers(){ val api = RetrofitHelper.getInstance() @@ -64,7 +125,7 @@ class FragmentUserFollowers : Fragment() { } followers = response.body()!!.toMutableList() rvFollowers.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) adapter= FollowersAdapter(followers,requireActivity()) } @@ -89,7 +150,7 @@ class FragmentUserFollowers : Fragment() { Log.d("MyFollowers","Successsssssssssssssssssssssssssssss") followers = response.body()!!.toMutableList() rvFollowers.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) adapter= FollowersAdapter(followers,requireActivity()) } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt index 9a78b6e..2406da8 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt @@ -1,11 +1,15 @@ package com.example.brzodolokacije.Fragments import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher import android.util.Log +import android.view.KeyEvent import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AutoCompleteTextView import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Adapters.FollowersAdapter @@ -13,6 +17,7 @@ import com.example.brzodolokacije.Models.UserReceive import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper +import com.google.android.material.button.MaterialButton import retrofit2.Call import retrofit2.Callback import retrofit2.Response @@ -21,9 +26,12 @@ import retrofit2.Response class FragmentUserFollowing : Fragment() { private lateinit var following:MutableList + private lateinit var searchedFollowing:MutableList private lateinit var rvFollowing: RecyclerView private lateinit var userId:String private lateinit var showMy:String + private lateinit var searchBar: AutoCompleteTextView + private lateinit var searchButton: MaterialButton override fun onCreateView( @@ -36,14 +44,65 @@ class FragmentUserFollowing : Fragment() { userId = bundle!!.getString("userId").toString() showMy = bundle!!.getString("showMy").toString().trim() rvFollowing=view.findViewById(R.id.rvFragmentUserFollowing) - + searchBar=view.findViewById(R.id.FragmentFollowingSearchBar) + searchButton=view.findViewById(R.id.FragmentFollowingSearchBButton) if(showMy=="yes"){ getFollowingWithoutId() } else if(showMy=="no") { getFollowing() } + searchButton.setOnClickListener { + searchText() + } + searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button + if (event.action === KeyEvent.ACTION_DOWN && + keyCode == KeyEvent.KEYCODE_ENTER + ) { + // Perform action on key press + searchText() + return@OnKeyListener true + } + false + }) + searchBar.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + } + + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + searchText() + if(count==0) + if(showMy=="yes"){ + getFollowingWithoutId() + } + else if(showMy=="no") { + getFollowing() + } + } + + override fun afterTextChanged(s: Editable) { + } + }) return view + } + fun searchText(){ + if(searchBar.text==null || searchBar.text.isNullOrEmpty() || searchBar.text.toString().trim()=="") + return + var text=searchBar.text.toString().trim() + searchedFollowing= mutableListOf() + for(user in following){ + if(user.username.contains(text)) + searchedFollowing.add(user) + } + rvFollowing.apply { + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) + adapter= FollowersAdapter(searchedFollowing,requireActivity()) + + } + + + + } fun getFollowing(){ @@ -58,7 +117,7 @@ class FragmentUserFollowing : Fragment() { Log.d("Following","Successsssssssssssssssssssssssssssss") following = response.body()!!.toMutableList() rvFollowing.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) adapter= FollowersAdapter(following,requireActivity()) } } @@ -80,7 +139,7 @@ class FragmentUserFollowing : Fragment() { Log.d("MyFollowings","Successsssssssssssssssssssssssssssss") following = response.body()!!.toMutableList() rvFollowing.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) adapter= FollowersAdapter(following,requireActivity()) } } diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml index 8b820bc..579e402 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml @@ -1,18 +1,58 @@ - + + + + + + + + + android:layout_height="wrap_content" + android:layout_marginTop="15dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/FragmentBrowseCardViewSearch" /> - \ No newline at end of file + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml index 7558375..f7c07df 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml @@ -1,18 +1,58 @@ - + + + + + + + + + android:layout_height="wrap_content" + android:layout_marginTop="15dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/FragmentBrowseCardViewSearch" /> - \ No newline at end of file + \ No newline at end of file -- cgit v1.2.3 From 05612cf3bbb09d66f3f167bc9428cbf072c4ef07 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 12 Dec 2022 23:08:38 +0100 Subject: Dodate provere za isInitialized i dodat override za onresume. --- .../brzodolokacije/Fragments/FragmentUserFollowers.kt | 11 +++++++++++ .../brzodolokacije/Fragments/FragmentUserFollowing.kt | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt index fe2dce3..f2c817a 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt @@ -91,6 +91,8 @@ class FragmentUserFollowers : Fragment() { fun searchText(){ if(searchBar.text==null || searchBar.text.isNullOrEmpty() || searchBar.text.toString().trim()=="") return + if(!this::followers.isInitialized) + return var text=searchBar.text.toString().trim() searchedFollowers= mutableListOf() for(user in followers){ @@ -159,4 +161,13 @@ class FragmentUserFollowers : Fragment() { } }) } + override fun onResume() { + super.onResume() + if(showMy=="yes"){ + getFollowersWithoutId() + } + else if(showMy=="no") { + getFollowers() + } + } } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt index 2406da8..0508c13 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt @@ -89,6 +89,8 @@ class FragmentUserFollowing : Fragment() { if(searchBar.text==null || searchBar.text.isNullOrEmpty() || searchBar.text.toString().trim()=="") return var text=searchBar.text.toString().trim() + if(!this::following.isInitialized) + return searchedFollowing= mutableListOf() for(user in following){ if(user.username.contains(text)) @@ -149,4 +151,14 @@ class FragmentUserFollowing : Fragment() { }) } + override fun onResume() { + super.onResume() + if(showMy=="yes"){ + getFollowingWithoutId() + } + else if(showMy=="no") { + getFollowing() + } + } + } \ No newline at end of file -- cgit v1.2.3 From 93b54b306853c50852a7999b7383603bc138e294 Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Mon, 12 Dec 2022 23:14:50 +0100 Subject: Uklonjena mogucnost slanja poruka samo preko korisnickog imena i dodata provera da li postoji korisnik kome se salje poruka #83 --- Backend/Api/Api/Services/MessageService.cs | 7 ++- .../brzodolokacije/Activities/ChatActivity.kt | 5 -- .../Activities/ChatActivityConversation.kt | 72 +--------------------- .../brzodolokacije/Services/RetrofitHelper.kt | 4 +- .../app/src/main/res/layout/activity_chat.xml | 12 ---- .../main/res/layout/activity_chat_conversation.xml | 25 -------- 6 files changed, 10 insertions(+), 115 deletions(-) diff --git a/Backend/Api/Api/Services/MessageService.cs b/Backend/Api/Api/Services/MessageService.cs index 9cc818b..71df70c 100644 --- a/Backend/Api/Api/Services/MessageService.cs +++ b/Backend/Api/Api/Services/MessageService.cs @@ -10,13 +10,15 @@ namespace Api.Services { private readonly IHttpContextAccessor _httpContext; private readonly IMongoCollection _messages; + private readonly IUserService _userService; private readonly IJwtService _jwtService; private IConfiguration _configuration; private readonly IHubContext _chatHub; - public MessageService(IDatabaseConnection settings, IMongoClient mongoClient, IJwtService jwtService, IHttpContextAccessor httpContextAccessor, IConfiguration configuration,IHubContext chatHub) + public MessageService(IDatabaseConnection settings, IMongoClient mongoClient, IUserService userService, IJwtService jwtService, IHttpContextAccessor httpContextAccessor, IConfiguration configuration,IHubContext chatHub) { var database = mongoClient.GetDatabase(settings.DatabaseName); _messages = database.GetCollection(settings.MessageCollectionname); + _userService = userService; _jwtService = jwtService; _httpContext = httpContextAccessor; _configuration = configuration; @@ -29,6 +31,9 @@ namespace Api.Services var senderId = _httpContext.HttpContext.User.FindFirstValue("id").ToString(); if (senderId == null) return null; + var receiverCheck =await _userService.GetSelfUserData(msg.receiverId); + if (receiverCheck == null) + return null; var tempMsg = new Message(); tempMsg._id = ""; tempMsg.receiverId = msg.receiverId; diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt index 49c61c7..5ddea3d 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt @@ -132,11 +132,6 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener { fun setListeners(){ - findViewById(R.id.addNewMessage).setOnClickListener { - val intent: Intent = Intent(this@ChatActivity,ChatActivityConversation::class.java) - intent.putExtra("receiverId","") - startActivity(intent) - } findViewById(R.id.btnBack).setOnClickListener { finish() } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt index 3a52cc4..723980b 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt @@ -4,7 +4,6 @@ import android.content.Intent import android.graphics.Bitmap import android.os.Bundle import android.util.Log -import android.view.View import android.widget.EditText import android.widget.ImageButton import android.widget.Toast @@ -72,63 +71,6 @@ class ChatActivityConversation : AppCompatActivity() { var messageContent=findViewById(R.id.etNewMessage).text.trim().toString() val Api= RetrofitHelper.getInstance() if(!messageContent.isNullOrEmpty()){ - if(userId.isNullOrEmpty() || userId.equals("null")){ - //zahtev sa username=om - receiverUsername=findViewById(R.id.etReceiverUsername).text.toString() - val request=Api.getProfile("Bearer "+token, - receiverUsername!! - ) - request.enqueue(object : retrofit2.Callback { - override fun onResponse(call: Call, response: Response) { - if(response.isSuccessful()){ - //zahtev da se posalje poruka - var user:UserReceive=response.body()!! - if(user._id==JWT(SharedPreferencesHelper.getValue("jwt",this@ChatActivityConversation)!!).claims["id"]?.asString()!!){ - Toast.makeText(this@ChatActivityConversation,"Ne mozete slati poruku sami sebi.",Toast.LENGTH_LONG).show() - } - else{ - userId=user._id - setHeader() - var message= MessageSend(userId!!,messageContent) - val request2=Api.sendMessage("Bearer "+token, - message - ) - request2.enqueue(object : retrofit2.Callback { - override fun onResponse(call: Call, response: Response) { - if(response.isSuccessful()){ - //zahtev da se posalje poruka - var responseMessage=response.body() - var cal: Calendar = Calendar.getInstance() - cal.time=responseMessage?.timestamp - responseMessage?.usableTimeStamp=cal - dbConnection?.addMessage(responseMessage!!,username=user.username) - requestMessages() - binding.etNewMessage.text?.clear() - - } - else{ - Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime1.",Toast.LENGTH_LONG).show() - } - } - - override fun onFailure(call: Call, t: Throwable) { - Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime2.",Toast.LENGTH_LONG).show() - } - }) - } - } - else{ - Log.d("main",response.message()) - //Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime3.",Toast.LENGTH_LONG).show() - } - } - - override fun onFailure(call: Call, t: Throwable) { - Toast.makeText(this@ChatActivityConversation,"fail.",Toast.LENGTH_LONG).show() - } - }) - } - else{ //zahtev da se posalje poruka var message= MessageSend(userId!!,messageContent) val request2=Api.sendMessage("Bearer "+token, @@ -155,8 +97,6 @@ class ChatActivityConversation : AppCompatActivity() { Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime.",Toast.LENGTH_LONG).show() } }) - } - } } binding.llHeader.setOnClickListener { @@ -172,20 +112,12 @@ class ChatActivityConversation : AppCompatActivity() { private fun setHeader(){ if(userId.isNullOrEmpty() || userId.equals("null")){ - binding.cvParentUsername.visibility= View.VISIBLE - binding.cvParentUsername.forceLayout() - binding.llHeader.visibility= View.GONE - binding.llHeader.invalidate() - binding.llHeader.forceLayout() + binding.tvFragmentTitle.text="Nije nađen korisnik" + binding.tvFragmentTitle.invalidate() } else{ - binding.llHeader.visibility= View.VISIBLE - binding.llHeader.invalidate() - binding.llHeader.forceLayout() binding.tvFragmentTitle.text=receiverUsername binding.tvFragmentTitle.invalidate() - binding.cvParentUsername.visibility= View.GONE - binding.cvParentUsername.forceLayout() } binding.btnBack.setOnClickListener { finish() diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt index 88685e4..43c2109 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt @@ -7,8 +7,8 @@ import retrofit2.converter.gson.GsonConverterFactory object RetrofitHelper { - //val baseUrl="http://10.0.2.2:5279" - val baseUrl="http://147.91.204.115:10082" + val baseUrl="http://10.0.2.2:5279" + //val baseUrl="http://147.91.204.115:10082" private var retrofit_noauth: IBackendApi? = null private var retrofit_auth: IBackendApi? = null diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml index 9815ce1..3b92058 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml @@ -6,18 +6,6 @@ android:layout_height="match_parent" tools:context=".Activities.ChatActivity"> - - - - - - - - - -- cgit v1.2.3 From 9977ea2f02e374d0a48bc7912d1ac2dc284f1cdc Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Mon, 12 Dec 2022 23:18:05 +0100 Subject: fix #83 --- .../src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt index 5ddea3d..18ff392 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt @@ -1,7 +1,6 @@ package com.example.brzodolokacije.Activities import android.Manifest -import android.content.Intent import android.content.pm.PackageManager import android.os.Build import android.os.Bundle -- cgit v1.2.3