Untitled
plain_text
2 months ago
59 kB
3
Indexable
Never
package com.zonamediagroup.zonamahasiswa.ActivityForhat import android.content.Context import android.content.Intent import android.graphics.Color import android.net.Uri import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler import android.text.Html import android.text.InputFilter import android.text.Spanned import android.util.Log import android.view.View import android.view.inputmethod.InputMethodManager import android.widget.LinearLayout import android.widget.MediaController import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import com.bumptech.glide.Glide import com.zonamediagroup.zonamahasiswa.CHECKTULISJAWABAN import com.zonamediagroup.zonamahasiswa.R import com.zonamediagroup.zonamahasiswa.Server import com.zonamediagroup.zonamahasiswa.adapters.HomeAdapter import com.zonamediagroup.zonamahasiswa.adapters.HomePictureAdapter import com.zonamediagroup.zonamahasiswa.adapters.KomentarAdapter import com.zonamediagroup.zonamahasiswa.databinding.ActivityBacaCurhatanBinding import com.zonamediagroup.zonamahasiswa.komponen_retrofit.ApiConfig import com.zonamediagroup.zonamahasiswa.komponen_retrofit.response.* import com.zonamediagroup.zonamahasiswa.localPersistent.ZonaSharedpref import retrofit2.Call import retrofit2.Callback import retrofit2.Response class BacaCurhatanActivity : AppCompatActivity() { private lateinit var binding: ActivityBacaCurhatanBinding private lateinit var layoutError: LinearLayout private lateinit var getIdCurhatan: String private lateinit var getBearerToken: String private lateinit var zonaSharedpref: ZonaSharedpref private lateinit var data: ArrayList<DataItem> private lateinit var komentarAdapter: KomentarAdapter private lateinit var recyclerViewBalasKomentar: RecyclerView private lateinit var retrofit: Call<ResponseGetCurhatanTanggapan> private lateinit var homePictureAdapter: HomePictureAdapter private lateinit var homePictureAdapter2: HomePictureAdapter private lateinit var dots: ArrayList<TextView> private lateinit var dots2: ArrayList<TextView> private var KOMENTARATAUBALASKOMENTAR = "komentar" private var idKomentar: Int? = 0 private var position: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityBacaCurhatanBinding.inflate(layoutInflater) setContentView(binding.root) /* ini buat testing dapetin token firebase jum'at 19 mei 2023 */ // FirebaseMessaging.getInstance().token.addOnCompleteListener { // if (!it.isSuccessful) { // return@addOnCompleteListener // } // val token = it.result // Log.e("RFK", "token nya lur $token", ) // } data = arrayListOf<DataItem>() CHECKTULISJAWABAN = null zonaSharedpref = ZonaSharedpref(this) /*Mengecek apakah di profile posisinya user asli/anonim? jika true maka asli jika false anonim*/ val zonaShare = zonaSharedpref.getSebagaiUser() if (zonaShare) { Glide.with(this@BacaCurhatanActivity) .load(zonaSharedpref.getImageUser()) .circleCrop() .placeholder(R.drawable.ic_no_image_available) .into(binding.idimgKomentar) } else { Glide.with(this@BacaCurhatanActivity) .load("http://zonamahasiswa.id/assets/img/avatar1.png") .circleCrop() .placeholder(R.drawable.ic_no_image_available) .into(binding.idimgKomentar) } /*END Mengecek apakah di profile posisinya user asli/anonim? jika true maka asli jika false anonim*/ binding.imgCloseTulisjawaban.setOnClickListener { onBackPressed() } val data = intent.data if (data != null) { val parameterIdpostingan = data.getQueryParameter("id")!! val parameterId = data.getQueryParameter("shareid")!! getIdCurhatan = parameterIdpostingan getBearerToken = zonaSharedpref.getAccesToken() Log.e("RFKY", "onCreate: idpostingan $parameterIdpostingan" ) Log.e("RFKY", "onCreate: id $parameterId" ) } else { getIdCurhatan = intent.getStringExtra(HomeAdapter.ID)!! getBearerToken = intent.getStringExtra(HomeAdapter.KEY_BEARER)!! } /*Keperluan ketika error dan muncul tampilan error*/ layoutError = findViewById<LinearLayout>(R.id.eror_layar) val cobaLagi = findViewById<TextView>(R.id.coba_lagi) cobaLagi.setOnClickListener { requestApi(getBearerToken, getIdCurhatan, data, zonaShare) requestKomentar(getBearerToken, getIdCurhatan) loading() } /*END Keperluan ketika error dan muncul tampilan error*/ requestApi(getBearerToken, getIdCurhatan, data, zonaShare) requestKomentar(getBearerToken, getIdCurhatan) loading() /*KIRIM KOMENTAR*/ binding.btnKirim.setOnClickListener { binding.btnKirim.isEnabled = false requestTambahKomentar(binding.idedtMessage.text.toString(), zonaShare ) binding.idedtMessage.setText("") closePopUpBalasKomentar() val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(binding.idedtMessage.windowToken, 0) } /* VALIDASI AWALAN KOMENTAR SELALU HURUF BESAR */ binding.idedtMessage.filters = arrayOf(object : InputFilter.AllCaps() { override fun filter( source: CharSequence?, start: Int, end: Int, dest: Spanned?, dstart: Int, dend: Int ): CharSequence { if (dend == 0) { return source.toString().toUpperCase() } else { return source.toString() } } }) binding.btnComment.setOnClickListener { binding.idedtMessage.requestFocus() val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.showSoftInput(binding.idedtMessage, InputMethodManager.SHOW_IMPLICIT) } val x = intent.getStringExtra("komentar") if (x != null) { binding.idedtMessage.requestFocus() val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY) } binding.swiperefresh.setOnRefreshListener { requestApi(getBearerToken, getIdCurhatan, data, zonaShare) requestKomentar(getBearerToken, getIdCurhatan) loading() binding.swiperefresh.isRefreshing = false } } override fun onBackPressed() { super.onBackPressed() CHECKTULISJAWABAN = "checktulisjawaban" retrofit.cancel() } fun requestApi(bearer: String, id: String, data: Uri?, type: Boolean) { val typeUser = if (type) "tidak" else "ya" retrofit = ApiConfig.getApiService(Server.BASE_URL).getBacaPostingan("Bearer $bearer", id) retrofit.enqueue(object : Callback<ResponseGetCurhatanTanggapan> { override fun onResponse( call: Call<ResponseGetCurhatanTanggapan>, response: Response<ResponseGetCurhatanTanggapan> ) { if (response.isSuccessful) { val dataResponse = response.body()!! /*validasi postingan di hapus*/ if (dataResponse.data?.statusPublish == "published") { /*validasi postingan di banned*/ if (dataResponse.data.statusReport == "tidak") { tampil() Log.e("RFK", "onResponse: ${dataResponse.status}", ) var judul : String? = dataResponse.data?.judulCurhatan val fotoUser = dataResponse.data?.user?.get(0)?.imageUser val nama = dataResponse.data?.namaPenulis val namaAnonim = dataResponse.data?.user_anonimous?.get(0)?.nama_anonim val username = dataResponse.data?.user?.get(0)?.username val usernameAnonim = dataResponse.data?.user_anonimous?.get(0)?.username_anonim val fotoAnonim = dataResponse.data?.foto_anonim val waktu = dataResponse.data?.datePublish val verified = dataResponse.data?.user?.get(0)?.verified var follow = dataResponse.data?.follow val kategori = dataResponse.data?.kategori?.get(0)?.namaKategori val deskripsi = dataResponse.data?.isiCurhatan var totalLike = dataResponse.data?.totalLike var validasiLike = dataResponse.data?.user_like val totalKomentar = dataResponse.data?.totalKomentar val totalTanggapan = dataResponse.data?.totalJawabanTanggapan val totalShare = dataResponse.data?.totalShare val idKategori = dataResponse.data?.idKategori val type = dataResponse.data?.typeCurhatan if (dataResponse.data.foto?.size != 0) { val dataFile = arrayListOf<String>() for (i in dataResponse.data.foto?.indices!!) { dataFile.add(dataResponse.data.foto[i]?.file!!) } initGambarOrVideo(dataResponse.data.foto[0]?.type!!, dataFile) } if (dataResponse.data.curhatanbro?.size != 0) { if (dataResponse.data.curhatanbro?.get(0)?.foto_file?.size != 0) { val dataFile = arrayListOf<String>() for (i in dataResponse.data.curhatanbro?.get(0)?.foto_file?.indices!!) { dataFile.add(dataResponse.data.curhatanbro[0]?.foto_file!![i]?.file!!) } initGambarOrVideo2( dataResponse.data.curhatanbro[0]?.foto_file!![0]?.type!!, dataFile ) } } if (type == "Curhatan") { binding.idborderCurhatan.visibility = View.GONE } else { /* Kalau tanggapan kesini */ binding.btnLoop.visibility = View.GONE binding.idborderCurhatan.visibility = View.VISIBLE /* Jika dari deeplink ini jalan */ if (data != null) { Log.e("RFK", "onResponse: deep link nih ${dataResponse.data?.idCurhatan}") requestApiUntukTanggapanKetikaDeepLink(dataResponse.data?.idCurhatan.toString()) } else { bacaCurhatanDariTanggapan(dataResponse.data?.idCurhatan.toString()) Log.e("RFK", "onResponse: dari biasa ${dataResponse.data?.idCurhatan}") val foto1 = intent.getStringExtra("foto") val nama1 = intent.getStringExtra("nama") judul = intent.getStringExtra("judul") val deskripsi1 = intent.getStringExtra("deskripsi") Glide.with(this@BacaCurhatanActivity) .load(foto1) .circleCrop() .placeholder(R.drawable.ic_no_image_available) .into(binding.idimgPertanyaan1) binding.idtvNamaPenggunaPertanyaan.text = nama1 Log.e("RFK", "onResponse: judul lur $judul ${judul == null} ${judul == "null"}", ) if (judul != null && judul != "null") { binding.idtvPertanyaan.text = judul } else { binding.idtvPertanyaan.visibility = View.GONE val layoutParam = binding.idtvDeskripsi.layoutParams as ConstraintLayout.LayoutParams layoutParam.topMargin = 32 } binding.idtvDeskripsi.text = deskripsi1 } } if (zonaSharedpref.getNamaPengguna() == username || zonaSharedpref.getUsernameAnonim() == username) { binding.idtvIkuti.visibility = View.GONE } else { binding.idtvIkuti.visibility = View.VISIBLE } /*Validasi yang posting user asli/anonim*/ Log.e("SELASA.20.06", "onResponse: ${dataResponse.data?.anonymouse} ") if (dataResponse.data?.anonymouse == "tidak") { Log.e("SELASA.20.06", "bukan anonim ") Glide.with(this@BacaCurhatanActivity) .load(fotoUser) .circleCrop() .placeholder(R.drawable.ic_no_image_available) .into(binding.idimgPertanyaan) binding.idtvNamapengguna.text = nama /*Validasi ketika request server untuk Ikuti*/ if (follow != null) { binding.idtvIkuti.apply { text = "Mengikuti" setTextColor(Color.parseColor("#6C757D")) } } else { binding.idtvIkuti.apply { text = "Ikuti+" setTextColor(Color.parseColor("#0D6EFD")) } } binding.idtvIkuti.setOnClickListener { if (follow != null) { binding.idtvIkuti.apply { text = "Ikuti+" setTextColor(Color.parseColor("#0D6EFD")) } ikutiUser(username!!, bearer, typeUser) follow = null } else { binding.idtvIkuti.apply { text = "Mengikuti" setTextColor(Color.parseColor("#6C757D")) } ikutiUser(username!!, bearer, typeUser) follow = 2 } } binding.idimgPertanyaan.setOnClickListener { melihatProfileOrangLain(username, follow) } binding.idtvNamapengguna.setOnClickListener { melihatProfileOrangLain(username, follow) } } else { Log.e("SELASA.20.06", " anonim ") Glide.with(this@BacaCurhatanActivity) .load("http://zonamahasiswa.id/assets/img/avatar1.png") .circleCrop() .placeholder(R.drawable.ic_no_image_available) .into(binding.idimgPertanyaan) binding.idtvNamapengguna.text = namaAnonim /*Validasi ketika request server untuk Ikuti*/ if (follow != null) { binding.idtvIkuti.apply { text = "Batal Suka" setTextColor(Color.parseColor("#DC3545")) } } else { binding.idtvIkuti.apply { text = "Suka" setTextColor(Color.parseColor("#0D6EFD")) } } binding.idtvIkuti.setOnClickListener { if (follow != null) { binding.idtvIkuti.apply { text = "Suka" setTextColor(Color.parseColor("#0D6EFD")) } ikutiUser(username!!, bearer, typeUser) follow = null } else { binding.idtvIkuti.apply { text = "Batal Suka" setTextColor(Color.parseColor("#DC3545")) } ikutiUser(username!!, bearer, typeUser) follow = 2 } } binding.idimgPertanyaan.setOnClickListener { melihatProfileOrangLain(usernameAnonim, follow) } binding.idtvNamapengguna.setOnClickListener { melihatProfileOrangLain(usernameAnonim, follow) } } if (verified != "tidak") { binding.idiconVerified.visibility = View.VISIBLE } else { binding.idiconVerified.visibility = View.GONE } /*Validasi ketika request server untuk like*/ if (validasiLike?.toInt() != 0) { /*Mengubah background like*/ binding.iconLikeForhat.apply { setImageResource(R.drawable.likelike) setColorFilter(ContextCompat.getColor(context, R.color.ada_like_forhat)) } } else { /*Mengubah background like*/ binding.iconLikeForhat.apply { setImageResource(R.drawable.like_forhat) setColorFilter(ContextCompat.getColor(context, R.color.black)) } } binding.btnLike.setOnClickListener { if (validasiLike?.toInt() != 0) { /*Mengubah value TextView like*/ val valueLike = binding.jumlahLikeForhat.text.toString().toInt() - 1 binding.jumlahLikeForhat.apply { text = valueLike.toString() } /*Mengubah background like*/ binding.iconLikeForhat.apply { setImageResource(R.drawable.like_forhat) setColorFilter(ContextCompat.getColor(context, R.color.black)) } likePostingan(id, bearer, typeUser) validasiLike = "0" totalLike = valueLike } else { /*Mengubah value TextView like*/ val valueLike = binding.jumlahLikeForhat.text.toString().toInt() + 1 binding.jumlahLikeForhat.apply { text = valueLike.toString() } /*Mengubah background like*/ binding.iconLikeForhat.apply { setImageResource(R.drawable.likelike) setColorFilter(ContextCompat.getColor(context, R.color.ada_like_forhat)) } likePostingan(id, bearer, typeUser) validasiLike = "1" totalLike = valueLike } } binding.btnLoop.setOnClickListener { val intent = Intent(this@BacaCurhatanActivity, TulisTanggapanActivity::class.java) intent.putExtra(HomeAdapter.ID, getIdCurhatan) intent.putExtra(HomeAdapter.KEY_BEARER, bearer) if (dataResponse.data?.anonymouse == "ya") { intent.putExtra("foto", fotoAnonim) intent.putExtra("nama", namaAnonim) intent.putExtra("waktu", waktu) if (judul == null) { intent.putExtra("judul", deskripsi) } else { intent.putExtra("judul", judul.toString()) } startActivity(intent) } else { intent.putExtra("foto", fotoUser) intent.putExtra("nama", nama) intent.putExtra("waktu", waktu) if (judul == null) { intent.putExtra("judul", deskripsi) } else { intent.putExtra("judul", judul.toString()) } startActivity(intent) } Log.e("SMW", "ID = $getIdCurhatan " ) Log.e("SMW", "FOTO = $fotoUser " ) Log.e("SMW", "NAMA = $nama " ) } binding.btnShare.setOnClickListener { val textnya = "https://curhatan-tanggapan.zonamahasiswa.net/?id=${getIdCurhatan}&shareid=${"44492"}" val shreIntent = Intent(Intent.ACTION_SEND) shreIntent.setType("text/plain") shreIntent.putExtra(Intent.EXTRA_TEXT, textnya) startActivity(Intent.createChooser(shreIntent, "Bagikan dengan")) requestSharePostingan(getIdCurhatan) } binding.idtvKomentaran.text = "$totalKomentar Komentar" if (judul != null && judul != "null") { binding.idtvJudulcurhatan.text = judul.toString() } else { binding.idtvJudulcurhatan.visibility = View.GONE val layoutParam = binding.idtvJawaban.layoutParams as ConstraintLayout.LayoutParams layoutParam.topMargin = 30 } binding.idtvKategoripertanyaan.text = kategori binding.idtvWaktuposting.text = waktu binding.idtvJawaban.text = deskripsi binding.jumlahLikeForhat.text = totalLike.toString() binding.jumlahCommentForhat.text = totalKomentar.toString() binding.jumlahLoop.text = totalTanggapan.toString() binding.jumlahShareForhat.text = totalShare.toString() // requestGetFileFotoVideo() binding.idtvKategoripertanyaan.setOnClickListener { val intent = Intent(this@BacaCurhatanActivity, ListKategoriActivity::class.java) intent.putExtra("KATEGORI", idKategori.toString()) startActivity(intent) } } else { postinganSudahDihapus() } } else { postinganSudahDihapus() } } else { error() } } override fun onFailure(call: Call<ResponseGetCurhatanTanggapan>, t: Throwable) { if (call.isCanceled) { } else { error() } } }) } fun requestApiUntukTanggapanKetikaDeepLink(idPostingan: String) { val retrofit = ApiConfig.getApiService(Server.BASE_URL).getBacaPostingan("Bearer $getBearerToken", idPostingan) retrofit.enqueue(object : Callback<ResponseGetCurhatanTanggapan> { override fun onResponse( call: Call<ResponseGetCurhatanTanggapan>, response: Response<ResponseGetCurhatanTanggapan> ) { val dataResponse = response.body()!! if (response.isSuccessful) { Log.e("RFK", "onResponse: berhasil lur WW ${dataResponse.status}", ) if (dataResponse.data?.anonymouse == "ya") { Glide.with(this@BacaCurhatanActivity) .load("http://zonamahasiswa.id/assets/img/avatar1.png") .circleCrop() .placeholder(R.drawable.ic_no_image_available) .into(binding.idimgPertanyaan1) binding.idtvNamaPenggunaPertanyaan.text = dataResponse.data?.user_anonimous?.get(0)?.nama_anonim } else { Glide.with(this@BacaCurhatanActivity) .load(dataResponse.data?.user?.get(0)?.imageUser) .circleCrop() .placeholder(R.drawable.ic_no_image_available) .into(binding.idimgPertanyaan1) binding.idtvNamaPenggunaPertanyaan.text = dataResponse.data?.namaPenulis } if (dataResponse.data?.judulCurhatan != null) { binding.idtvJudulcurhatan.text = dataResponse.data?.judulCurhatan.toString() binding.idtvPertanyaan.text = dataResponse.data?.judulCurhatan.toString() } else { binding.idtvJudulcurhatan.visibility = View.GONE binding.idtvPertanyaan.visibility = View.GONE val layoutParam = binding.idtvJawaban.layoutParams as ConstraintLayout.LayoutParams layoutParam.topMargin = 30 val layoutParam2 = binding.idtvDeskripsi.layoutParams as ConstraintLayout.LayoutParams layoutParam2.topMargin = 32 } binding.idtvDeskripsi.text = dataResponse.data?.isiCurhatan bacaCurhatanDariTanggapan(idPostingan) Log.e("RFK", "onResponse: datanya deepLink ${dataResponse.data?.namaPenulis} | ${dataResponse.data?.judulCurhatan.toString()} | ${dataResponse.data?.isiCurhatan} | ${dataResponse.data?.user?.get(0)?.imageUser} | ${dataResponse.data?.cover}", ) } else { Log.e("RFK", "onResponse: gagal ${dataResponse.status}", ) } } override fun onFailure(call: Call<ResponseGetCurhatanTanggapan>, t: Throwable) { Log.e("RFK", "onResponse: gagal su", ) } }) } fun requestKomentar(bearer: String, id: String) { val retrofit = ApiConfig.getApiService(Server.BASE_URL).getKomentar("Bearer " + bearer, id, "all") retrofit.enqueue(object : Callback<ResponseGetKomentar> { override fun onResponse( call: Call<ResponseGetKomentar>, response: Response<ResponseGetKomentar> ) { if (response.isSuccessful) { val dataResponse = response.body()!! val listData = dataResponse?.data Log.e("RFK", "STATUS: ${dataResponse.status}", ) if (data.size != 0) data.clear() if (dataResponse.status == 1) { for (i in listData?.indices!!) { val foto = listData[i]?.fotoUser val nama = listData[i]?.nama val waktu = listData[i]?.createdAt val komentar = listData[i]?.komentar val id = listData[i]?.id val lastBalasan = listData[i]?.lastBalasan val totalBalasan = listData[i]?.totalBalasan val totalSuka = listData[i]?.totalSuka val userLike = listData[i]?.userLike val idCurhatan = listData[i]?.idCurhatan val username = listData[i]?.username data.add( DataItem( username, totalBalasan, totalSuka, komentar, "", waktu, userLike, lastBalasan, foto, idCurhatan, nama, "", id, "", 0, arrayListOf() ) ) } /*Jika response next tidak sama dengan 0 maka tampilkan komentar lain*/ if (dataResponse.next.toString() != "0") { binding.idtvLainnya.apply { visibility = View.VISIBLE setOnClickListener { isEnabled = false this.text = "Memuat..." requestNextKomentar(bearer, id, dataResponse.next.toString()) } } } else { binding.idtvLainnya.visibility = View.GONE } } initRvKomentar() } else { } } override fun onFailure(call: Call<ResponseGetKomentar>, t: Throwable) { Log.e("RFK", "ERROR APA: ${t.message}", ) } }) } fun requestNextKomentar(bearer: String, id: String, next: String) { val retrofit = ApiConfig.getApiService(Server.BASE_URL).getKomentar("Bearer " + bearer, id, next) retrofit.enqueue(object : Callback<ResponseGetKomentar> { override fun onResponse( call: Call<ResponseGetKomentar>, response: Response<ResponseGetKomentar> ) { binding.idtvLainnya.isEnabled = true if (response.isSuccessful) { val dataResponse = response.body()!! val listData = dataResponse?.data if (dataResponse.status == 1) { for (i in listData?.indices!!) { val foto = listData[i]?.fotoUser val nama = listData[i]?.nama val waktu = listData[i]?.createdAt val komentar = listData[i]?.komentar val id = listData[i]?.id val lastBalasan = listData[i]?.lastBalasan val totalBalasan = listData[i]?.totalBalasan val totalSuka = listData[i]?.totalSuka val userLike = listData[i]?.userLike val idCurhatan = listData[i]?.idCurhatan val username = listData[i]?.username data.add( DataItem( username, totalBalasan, totalSuka, komentar, "", waktu, userLike, lastBalasan, foto, idCurhatan, nama, "", id, "", 0, arrayListOf() ) ) } binding.idtvLainnya.text = "Lainnya" komentarAdapter.notifyDataSetChanged() /*Jika response next tidak sama dengan 0 maka tampilkan komentar lain*/ if (dataResponse.next.toString() != "0") { binding.idtvLainnya.apply { visibility = View.VISIBLE setOnClickListener { binding.idtvLainnya.isEnabled = false this.text = "Memuat..." requestNextKomentar(bearer, id, dataResponse.next.toString()) } } } else { binding.idtvLainnya.visibility = View.GONE } } } else { } } override fun onFailure(call: Call<ResponseGetKomentar>, t: Throwable) { binding.idtvLainnya.isEnabled = true } }) } fun requestTambahKomentar(input: String, typeUser: Boolean) { //harus tau return variable val type = if (typeUser) "tidak" else "ya" val validasiUser = if (typeUser) zonaSharedpref.getNamaPengguna() else zonaSharedpref.getUsernameAnonim() if (KOMENTARATAUBALASKOMENTAR == "komentar") { val retrofit = ApiConfig.getApiService(Server.BASE_URL).tambahKomentar("Bearer $getBearerToken", getIdCurhatan, input, type) retrofit.enqueue(object : Callback<ResponseStoreKomentar> { override fun onResponse( call: Call<ResponseStoreKomentar>, response: Response<ResponseStoreKomentar> ) { if (response.isSuccessful) { val dataResponse = response.body()!! Log.e("RFK", "onResponse: hasil nya ${dataResponse.status}", ) val foto = dataResponse.data?.foto_user val nama = dataResponse.data?.nama val waktu = dataResponse.data?.created_at val komentar = dataResponse.data?.komentar val id = dataResponse.data?.id data.add(0, DataItem( validasiUser, 0, 0, komentar, "", waktu, null, null, foto, "", nama, "", id, "", 0, arrayListOf() ) ) binding.idtvKomentaran.text = dataResponse.total_semua_komentar + " Komentar" binding.jumlahCommentForhat.text = dataResponse.total_semua_komentar komentarAdapter.notifyDataSetChanged() binding.btnKirim.isEnabled = true } else { binding.btnKirim.isEnabled = true } } override fun onFailure(call: Call<ResponseStoreKomentar>, t: Throwable) { binding.btnKirim.isEnabled = true } }) } else { Log.e("RFK", "requestTambahKomentar: id komentar $idKomentar", ) val retrofit = ApiConfig.getApiService(Server.BASE_URL).tambahBalasKomentar("Bearer $getBearerToken", getIdCurhatan, idKomentar.toString(), input, type) retrofit.enqueue(object : Callback<ResponseStoreKomentar> { override fun onResponse( call: Call<ResponseStoreKomentar>, response: Response<ResponseStoreKomentar> ) { if (response.isSuccessful) { val dataResponse = response.body()!! Log.e("RFK", "onResponse: hasil nya balas komentar ${dataResponse.status}", ) val foto = dataResponse.data?.foto_user val nama = dataResponse.data?.nama val waktu = dataResponse.data?.created_at val komentar = dataResponse.data?.komentar val id = dataResponse.data?.id val dataBalasKomentar = arrayListOf<DataItem>() dataBalasKomentar.add( DataItem( validasiUser, 0, 0, komentar, "", waktu, null, null, foto, "", nama, "", id, "", 0, arrayListOf(), position.toString(), idKomentar.toString() ) ) komentarAdapter.tambahBalasKomentar(dataBalasKomentar, recyclerViewBalasKomentar, position) binding.btnKirim.isEnabled = true } else { binding.btnKirim.isEnabled = true } } override fun onFailure(call: Call<ResponseStoreKomentar>, t: Throwable) { binding.btnKirim.isEnabled = true } }) } } fun initRvKomentar() { komentarAdapter = KomentarAdapter(data, getBearerToken, this, zonaSharedpref.getNamaPengguna(), zonaSharedpref.getUsernameAnonim()) komentarAdapter.setOnItemClickCallback(object : KomentarAdapter.OnItemClickCallback { override fun onItemClicked(username: String?, idKomentar: Int?, recycler: RecyclerView, position: Int, validasi: String) { recyclerViewBalasKomentar = recycler binding.idrvKomentar.smoothScrollToPosition(10) /*Memunculkan keyboard*/ binding.idedtMessage.requestFocus() val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.showSoftInput(binding.idedtMessage, InputMethodManager.SHOW_IMPLICIT) /*Jika komentar maka idkomentar ganti*/ if (validasi == "komentar") { popUpBalasKomentar(username, idKomentar, position) } else { popUpBalasKomentar(username, idKomentar, position) } } }) binding.idrvKomentar.apply { layoutManager = LinearLayoutManager(this@BacaCurhatanActivity) adapter = komentarAdapter } } fun popUpBalasKomentar(username: String?, idKomentar: Int?, position: Int) { KOMENTARATAUBALASKOMENTAR = "balaskomentar" this.idKomentar = idKomentar this.position = position binding.idlayoutmembalas.apply { visibility = View.VISIBLE text = "Membalas $username" } binding.idclosebalaskomentar.apply { visibility = View.VISIBLE setOnClickListener { closePopUpBalasKomentar() } } } fun closePopUpBalasKomentar() { KOMENTARATAUBALASKOMENTAR = "komentar" binding.idlayoutmembalas.visibility = View.GONE binding.idclosebalaskomentar.visibility = View.GONE } fun loading() { binding.loadingShimmer.apply { visibility = View.VISIBLE startShimmer() } layoutError.visibility = View.GONE binding.idlayoutkontent.visibility = View.GONE binding.layoutSudahdihapus.visibility = View.GONE } fun error() { binding.loadingShimmer.apply { visibility = View.GONE stopShimmer() } layoutError.visibility = View.VISIBLE binding.idlayoutkontent.visibility = View.GONE binding.layoutSudahdihapus.visibility = View.GONE } fun tampil() { binding.loadingShimmer.apply { visibility = View.GONE stopShimmer() } layoutError.visibility = View.GONE binding.idlayoutkontent.visibility = View.VISIBLE binding.layoutSudahdihapus.visibility = View.GONE } fun postinganSudahDihapus() { binding.loadingShimmer.apply { visibility = View.GONE stopShimmer() } layoutError.visibility = View.GONE binding.idlayoutkontent.visibility = View.GONE binding.layoutSudahdihapus.visibility = View.VISIBLE } fun ikutiUser(username: String, bearerToken: String, type: String) { val retrofit = ApiConfig.getApiService(Server.BASE_URL).ikutiPengguna("Bearer $bearerToken", username, type) retrofit.enqueue(object : Callback<ResponseLogout> { override fun onResponse( call: Call<ResponseLogout>, response: Response<ResponseLogout> ) { if (response.isSuccessful) { val dataresponse = response.body()!! Log.e("RFK", "onResponse: sukses ikuti ${dataresponse.message}" , ) } else { Log.e("RFK", "onResponse: gagal ikuti", ) } } override fun onFailure(call: Call<ResponseLogout>, t: Throwable) { Log.e("RFK", "onResponse: gaa ikuti", ) } }) } fun likePostingan(idPostingan: String, bearerToken: String, typeUser: String) { val retrofit = ApiConfig.getApiService(Server.BASE_URL).likePostingan("Bearer $bearerToken", idPostingan, typeUser) retrofit.enqueue(object : Callback<ResponseLogout> { override fun onResponse( call: Call<ResponseLogout>, response: Response<ResponseLogout> ) { if (response.isSuccessful) { Log.e("RFK", "onResponse: sukses like", ) } else { Log.e("RFK", "onResponse: gaga like", ) } } override fun onFailure(call: Call<ResponseLogout>, t: Throwable) { Log.e("RFK", "onResponse: glike", ) } }) } fun requestSharePostingan(idPostingan: String) { val retrofit = ApiConfig.getApiService(Server.BASE_URL).sharePostingan(idPostingan, "android ip", "android device", "android argent") retrofit.enqueue(object : Callback<ResponseLogout> { override fun onResponse( call: Call<ResponseLogout>, response: Response<ResponseLogout> ) { val dataResponse = response.body()!! if (response.isSuccessful) { Log.e("RFK", "onResponse: data result sukses ${dataResponse.status}", ) } else { Log.e("RFK", "onResponse: data result gaga ${dataResponse.status}", ) } } override fun onFailure(call: Call<ResponseLogout>, t: Throwable) { Log.e("RFK", "onResponse: data result gagal ${t.message}", ) } }) } // fun requestGetFileFotoVideo() { // val retrofit = ApiConfig.getApiService(Server.BASE_URL).getFileList("Bearer $getBearerToken", getIdCurhatan) // retrofit.enqueue(object : Callback<ResponseGetFileListFotoVideo> { // override fun onResponse( // call: Call<ResponseGetFileListFotoVideo>, // response: Response<ResponseGetFileListFotoVideo> // ) { // val dataResponse = response.body()!! // if (response.isSuccessful) { // if (dataResponse.data.size != 0) { // val dataFile = arrayListOf<String>() // // for (i in dataResponse.data.indices) { // dataFile.add(dataResponse.data[i].file) // } // // initGambarOrVideo(dataResponse.data[0].type, dataFile) // } // } else { // Log.e("RFK", "onResponse: gagal lur ", ) // } // } // // override fun onFailure(call: Call<ResponseGetFileListFotoVideo>, t: Throwable) { // // Log.e("RFK", "onResponse: errror ${t.message}", ) // } // // }) // } fun initGambarOrVideo(type: String, data: ArrayList<String>) { Log.e("RFK", "initGambarOrVideo: $type ${data.size}", ) binding.idlayoutGambar.visibility = View.VISIBLE Log.e("RFK", "initGambarOrVideoData: $type $data", ) if (type == "image") { homePictureAdapter = HomePictureAdapter(data) binding.viewPager.adapter = homePictureAdapter dots = ArrayList() setIndicator() binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { selectedDot(position) super.onPageSelected(position) } }) Log.e("RFK", "initGambarOrVideo: ADAPTER ${homePictureAdapter.data}") } else { val videoUri = Uri.parse(data[0]) val mediaController = MediaController(this) binding.idvideo.visibility = View.VISIBLE binding.playVideo.visibility = View.VISIBLE binding.viewPager.visibility = View.GONE binding.idvideo.setVideoURI(videoUri) binding.idvideo.setOnPreparedListener { mp -> binding.idvideo.seekTo(1) mp.setOnSeekCompleteListener { binding.playVideo.setOnClickListener { if (!binding.idvideo.isPlaying) { binding.playVideo.visibility = View.GONE binding.idvideo.start() binding.idvideo.setMediaController(mediaController) mediaController.show(2000) } } } } binding.idvideo.setOnClickListener { mediaController.visibility = View.VISIBLE } binding.idvideo.setOnCompletionListener { binding.playVideo.visibility = View.VISIBLE } binding.root.viewTreeObserver.addOnScrollChangedListener { if (binding.idvideo.isPlaying) { binding.idvideo.pause() binding.playVideo.visibility = View.VISIBLE mediaController.visibility = View.GONE } } } } private fun selectedDot(position: Int) { for (i in 0 until homePictureAdapter.data.size) { if (i == position) dots[i].setTextColor(ContextCompat.getColor(this, R.color.bar_tulis_forhat_finished)) else dots[i].setTextColor(ContextCompat.getColor(this, R.color.warna_stroke_submenufilterforhat_notselected)) Log.e("RFK", "data2: ${data.size}") Log.e("RFK", "data2: ${homePictureAdapter.data.size}") } } private fun setIndicator() { /*ini agar ketika refresh, view nya ke reset ya*/ binding.indicator.removeAllViews() /*END ini agar ketika refresh, view nya ke reset ya*/ for (i in 0 until homePictureAdapter.data.size) { dots.add(TextView(this)) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { dots[i].text= Html.fromHtml("●", Html.FROM_HTML_MODE_LEGACY).toString() } else { dots[i].text= Html.fromHtml("●") } dots[i].textSize = 16f binding.indicator.addView(dots[i]) Log.e("RFK", "data: ${data.size}") } if (homePictureAdapter.data.size == 1) { binding.indicator.visibility = View.GONE } } fun initGambarOrVideo2(type: String, data: ArrayList<String>) { Log.e("RFK", "initGambarOrVideo: $type ${data.size}", ) binding.idlayoutGambar2.visibility = View.VISIBLE Log.e("RFK", "initGambarOrVideoData: $type $data", ) if (type == "image") { homePictureAdapter2 = HomePictureAdapter(data) binding.viewPager2.adapter = homePictureAdapter2 dots2 = ArrayList() setIndicator2() binding.viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { selectedDot2(position) super.onPageSelected(position) } }) Log.e("RFK", "initGambarOrVideo: ADAPTER ${homePictureAdapter2.data}") } else { val videoUri = Uri.parse(data[0]) val mediaController = MediaController(this) binding.idvideo2.visibility = View.VISIBLE binding.playVideo2.visibility = View.VISIBLE binding.viewPager2.visibility = View.GONE binding.idvideo2.setVideoURI(videoUri) binding.idvideo2.setOnPreparedListener { mp -> binding.idvideo2.seekTo(1) mp.setOnSeekCompleteListener { binding.playVideo2.setOnClickListener { if (!binding.idvideo2.isPlaying) { binding.playVideo2.visibility = View.GONE binding.idvideo2.start() binding.idvideo2.setMediaController(mediaController) mediaController.show(2000) } } } } binding.idvideo2.setOnClickListener { mediaController.visibility = View.VISIBLE } binding.idvideo2.setOnCompletionListener { binding.playVideo2.visibility = View.VISIBLE } binding.root.viewTreeObserver.addOnScrollChangedListener { if (binding.idvideo2.isPlaying) { binding.idvideo2.pause() binding.playVideo2.visibility = View.VISIBLE mediaController.visibility = View.GONE } } } } private fun selectedDot2(position: Int) { for (i in 0 until homePictureAdapter2.data.size) { if (i == position) dots2[i].setTextColor(ContextCompat.getColor(this, R.color.bar_tulis_forhat_finished)) else dots2[i].setTextColor(ContextCompat.getColor(this, R.color.warna_stroke_submenufilterforhat_notselected)) Log.e("RFK", "data2: ${data.size}") } } private fun setIndicator2() { /*ini agar ketika refresh, view nya ke reset ya*/ binding.indicator2.removeAllViews() /*END ini agar ketika refresh, view nya ke reset ya*/ for (i in 0 until homePictureAdapter2.data.size) { dots2.add(TextView(this)) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { dots2[i].text= Html.fromHtml("●", Html.FROM_HTML_MODE_LEGACY).toString() } else { dots2[i].text= Html.fromHtml("●") } dots2[i].textSize = 16f binding.indicator2.addView(dots2[i]) Log.e("RFK", "data: ${data.size}") } if (homePictureAdapter2.data.size == 1) { binding.indicator2.visibility = View.GONE } } private fun bacaCurhatanDariTanggapan(idPostingan: String) { binding.idborderCurhatan.setOnClickListener { val intent = Intent(this@BacaCurhatanActivity, BacaCurhatanDariTanggapanActivity::class.java) intent.putExtra(HomeAdapter.ID, idPostingan) intent.putExtra(HomeAdapter.KEY_BEARER, getBearerToken) startActivity(intent) } } fun melihatProfileOrangLain(username: String?, isFollow: Int?) { Log.e("RFK", "melihat profile orang : kirim $username $isFollow", ) val intent = Intent(this, ForhatProfileOrang::class.java) intent.putExtra("USERNAME", username) intent.putExtra("BEARER", getBearerToken) intent.putExtra("FOLLOW", isFollow) startActivity(intent) } }