aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml3
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt125
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt13
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt2
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