Untitled
unknown
plain_text
2 years ago
59 kB
13
Indexable
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)
}
}Editor is loading...