package com.h.pixeldroid import android.app.Activity import android.content.Intent import android.net.Uri import android.os.Bundle import android.provider.OpenableColumns import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.net.toFile import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.google.android.material.textfield.TextInputLayout import com.h.pixeldroid.api.PixelfedAPI import com.h.pixeldroid.db.AppDatabase import com.h.pixeldroid.db.entities.UserDatabaseEntity import com.h.pixeldroid.di.PixelfedAPIHolder import com.h.pixeldroid.interfaces.PostCreationListener import com.h.pixeldroid.objects.Attachment import com.h.pixeldroid.objects.Instance import com.h.pixeldroid.objects.Status import com.h.pixeldroid.utils.ProgressRequestBody import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import kotlinx.android.synthetic.main.activity_post_creation.* import kotlinx.android.synthetic.main.image_album_creation.view.* import okhttp3.MultipartBody import retrofit2.Call import retrofit2.Callback import retrofit2.Response import javax.inject.Inject private val TAG = "Post Creation Activity" private val MORE_PICTURES_REQUEST_CODE = 0xffff class PostCreationActivity : AppCompatActivity(), PostCreationListener { private lateinit var recycler : RecyclerView private lateinit var adapter : PostCreationAdapter private lateinit var accessToken: String private lateinit var pixelfedAPI: PixelfedAPI private var muListOfIds: MutableList = mutableListOf() private var progressList: ArrayList = arrayListOf() private var positionResult = 0 private var user: UserDatabaseEntity? = null private var posts: ArrayList = ArrayList() @Inject lateinit var db: AppDatabase @Inject lateinit var apiHolder: PixelfedAPIHolder override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_post_creation) (this.application as Pixeldroid).getAppComponent().inject(this) // get image URIs if(intent.clipData != null) { val count = intent.clipData!!.itemCount for (i in 0 until count) { val imageUri: String = intent.clipData!!.getItemAt(i).uri.toString() posts.add(imageUri) } } user = db.userDao().getActiveUser() val instances = db.instanceDao().getAll() val textField = findViewById(R.id.postTextInputLayout) textField.counterMaxLength = if (user != null){ val thisInstances = instances.filter { instanceDatabaseEntity -> instanceDatabaseEntity.uri.contains(user!!.instance_uri) } thisInstances.first().max_toot_chars } else { Instance.DEFAULT_MAX_TOOT_CHARS } accessToken = user?.accessToken.orEmpty() pixelfedAPI = apiHolder.api ?: apiHolder.setDomainToCurrentUser(db) // check if the pictures are alright // TODO //upload the picture and display progress while doing so muListOfIds = posts.map { "" }.toMutableList() progressList = posts.map { 0 } as ArrayList upload() adapter = PostCreationAdapter(posts) adapter.listener = this recycler = findViewById(R.id.image_grid) recycler.layoutManager = GridLayoutManager(this, 3) recycler.adapter = adapter // get the description and send the post findViewById