diff options
Diffstat (limited to 'Client')
5 files changed, 119 insertions, 26 deletions
diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index dc4b3bb..362e82b 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -8,9 +8,12 @@ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" /> <uses-permission android:name="android.permission.CAMERA" + android:required="true" android:requiredFeature="true"/> + <!--SVOJSTVA--> <uses-feature android:name="android.hardware.camera" android:required="true"></uses-feature> diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt index 3334518..40d8f11 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt @@ -1,33 +1,30 @@ package com.example.brzodolokacije.Activities import android.Manifest -import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.database.Cursor -import android.graphics.BitmapFactory import android.graphics.Color import android.net.Uri -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.provider.MediaStore -import android.provider.MediaStore.Audio.Media import android.util.Log import android.view.View -import android.view.ViewGroup import android.widget.* -import androidx.constraintlayout.motion.widget.TransitionBuilder.validate +import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat -import com.example.brzodolokacije.Interfaces.IBackendApi -import com.example.brzodolokacije.Models.Post -import com.example.brzodolokacije.Models.PostImage -import com.example.brzodolokacije.Models.PostSend +import com.example.brzodolokacije.Models.Location +import com.example.brzodolokacije.Models.LocationType +import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper -import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory -import java.net.URI +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import okhttp3.MediaType +import okhttp3.MultipartBody +import okhttp3.RequestBody +import retrofit2.Call +import retrofit2.Response +import java.io.File +import java.io.IOException class ActivityAddPost : AppCompatActivity() { @@ -162,20 +159,106 @@ class ActivityAddPost : AppCompatActivity() { } } private fun sendPost(){ + uploadLocation() + + } + fun uploadLocation() { val api =RetrofitHelper.getInstance() + var loc:Location=Location("",locationString,"","","",0.0,0.0,LocationType.GRAD) + var jwtString= SharedPreferencesHelper.getValue("jwt",this) + var data=api.addLocation("Bearer "+jwtString,loc) + + + data.enqueue(object : retrofit2.Callback<Location?> { + override fun onResponse(call: Call<Location?>, response: Response<Location?>) { + if(response.isSuccessful()){ + Toast.makeText( + applicationContext, "USPEH", Toast.LENGTH_LONG + ).show(); + uploadPost(response.body()!!._id) + Log.d("MAIN","RADI") + Log.d("MAIN","RADI") + + }else { + + if (response.errorBody() != null) { + Log.d("Main",response.errorBody()!!.string()) + Log.d("Main",response.message()) + } + Log.d("Main","sadadsa") + Log.d("Main",response.errorBody()!!.string()) + Log.d("Main",response.message()) + } - var obj=PostSend("","","") + } - var loc=locationString - location.text.clear() + override fun onFailure(call: Call<Location?>, t: Throwable) { + Toast.makeText( + applicationContext, t.toString(), Toast.LENGTH_LONG + ).show(); + Log.d("Main",t.toString()) + } + }) + } + fun uploadPost(loc:String){ + val api =RetrofitHelper.getInstance() var desc=descriptionString description.text.clear() - - obj.locationId=loc - obj.description=desc + //loc + //desc + var locReq=RequestBody.create(MediaType.parse("text/plain"),loc) + var descReq=RequestBody.create(MediaType.parse("text/plain"),desc) + var idReq=RequestBody.create(MediaType.parse("text/plain"),"dsa") + val imagesParts = arrayOfNulls<MultipartBody.Part>( + uploadedImages!!.size + ) //dodavanje u bazu + for (i in 0..uploadedImages!!.size - 1){ + //var file=File(uploadedImages!![i]!!.path) + Log.d("Main", uploadedImages!![i]!!.path!!) + var inputStream=getContentResolver().openInputStream(uploadedImages!![i]!!) + val file: File = File.createTempFile("temp",i.toString()) + file!!.writeBytes(inputStream!!.readBytes()) + + + var imageBody=RequestBody.create(MediaType.parse("image/*"),file) + imagesParts[i]=MultipartBody.Part.createFormData("images",file.name,imageBody) + } + var jwtString= SharedPreferencesHelper.getValue("jwt",this) + var data=api.addPost("Bearer "+jwtString,imagesParts,idReq,descReq,locReq) + + + data.enqueue(object : retrofit2.Callback<PostPreview?> { + override fun onResponse(call: Call<PostPreview?>, response: Response<PostPreview?>) { + if(response.isSuccessful()){ + Toast.makeText( + applicationContext, "USPEH", Toast.LENGTH_LONG + ).show(); + }else { + + if (response.errorBody() != null) { + Toast.makeText( + applicationContext, + response.errorBody()!!.string(), + Toast.LENGTH_LONG + ).show(); + Log.d("Main",response.errorBody()!!.string()) + } + } + + + } + + override fun onFailure(call: Call<PostPreview?>, t: Throwable) { + Toast.makeText( + applicationContext, t.toString(), Toast.LENGTH_LONG + ).show(); + Log.d("Main",t.toString()) + } + }) } + }
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index 9fc0754..807cbde 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -96,7 +96,7 @@ class FragmentShowPosts : Fragment() { val rootView = inflater?.inflate(R.layout.fragment_show_posts, container, false) recyclerView = rootView?.findViewById(R.id.rvMain) // set recyclerView attributes - recyclerView?.setHasFixedSize(true) + recyclerView?.setHasFixedSize(false) recyclerView?.layoutManager = layoutManagerVar recyclerView?.adapter = adapterVar return rootView diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt index 3f81899..c712597 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt @@ -6,11 +6,14 @@ import com.example.brzodolokacije.Models.Auth.Register import com.example.brzodolokacije.Models.Auth.ResetPass import com.example.brzodolokacije.Models.Location import com.example.brzodolokacije.Models.PostPreview -import com.example.brzodolokacije.Models.PostSend +import okhttp3.MultipartBody +import okhttp3.Request +import okhttp3.RequestBody import okhttp3.ResponseBody import retrofit2.Call import retrofit2.http.* + interface IBackendApi { @POST("/api/auth/login") fun login(@Body obj:Login): Call<String> @@ -25,10 +28,14 @@ interface IBackendApi { @GET("/api/post") fun getPosts(@Header("Authorization") authHeader:String):Call<MutableList<PostPreview>> @POST("/api/Location/add") - fun addLocation(@Body obj:Location,@Header("Authorization") authHeader:String):Call<Location> + fun addLocation(@Header("Authorization") authHeader:String,@Body obj: Location ):Call<Location> @Multipart @POST("/api/Post/add") - fun addPost(@Part obj:PostSend,@Header("Authorization") authHeader:String):Call<PostPreview> + fun addPost(@Header("Authorization") authHeader:String, @Part images: Array<MultipartBody.Part?>? + ,@Part("_id") _id:RequestBody + ,@Part("description") description:RequestBody + ,@Part("locationId") locationId:RequestBody + ):Call<PostPreview> //@POST("putanja") //fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call<Post> diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt index 155f6d3..9b9afaa 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt @@ -22,7 +22,7 @@ data class PostSend( var _id:String, var locationId:String, var description:String, - //var images: List<MultipartBody.Part> + var images: List<MultipartBody.Part> ) @Parcelize |