MehranCode

 avatar
user_3807706754
kotlin
2 years ago
7.2 kB
2
Indexable
package com.app.tiktokdownloader.fragment

import android.os.Build
import android.os.Bundle
import android.view.View
import android.widget.SeekBar
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer
import com.app.tiktokdownloader.R
import com.app.tiktokdownloader.db.BatchViewModel
import com.app.tiktokdownloader.databinding.FragmentDownloadBinding
import com.app.tiktokdownloader.inappsub.InAppSubscription
import com.app.tiktokdownloader.mobileads.admob.AdMobBanner
import com.app.tiktokdownloader.mobileads.admob.AdMobRewarded
import com.app.tiktokdownloader.ui.KBottomDialogFragment
import com.app.tiktokdownloader.utils.D
import com.app.tiktokdownloader.utils.makeToast
import com.app.tiktokdownloader.utils.materialdialog.KMaterialProgress
import com.app.tiktokdownloader.utils.visible
import com.app.tiktokdownloader.volley.JSONPostRequest
import dagger.hilt.android.AndroidEntryPoint
import com.app.tiktokdownloader.mobileads.admobads.AdMobBannerAd
import com.app.tiktokdownloader.utils.materialdialog.KMaterialDialog

@AndroidEntryPoint
class DownloadFragment() : KBottomDialogFragment<FragmentDownloadBinding>(), View.OnClickListener {

    val TAG = "downloadFragment"

    private val batchVM: BatchViewModel by viewModels()
    private var listener: BatchDownloadListener? = null
    private var videoCount: Int = 50

//    private lateinit var inAppSubs: InAppSubscription
//    private lateinit var adMobRewarded: AdMobRewarded
//    private lateinit var progress: KMaterialProgress

    constructor(listener: BatchDownloadListener) : this() {
        this.listener = listener
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

//        progress = KMaterialProgress(requireActivity())
//        inAppSubs = InAppSubscription(requireActivity())
//        adMobRewarded = AdMobRewarded(requireContext())
//        binding.lytBannerAd.visible(!inAppSubs.isSubscribed)
//        if (!inAppSubs.isSubscribed) {
//            AdMobBanner(requireContext()).load("banner_download", binding.lytBannerAd)
//        }

        initViews()
    }

//    private fun getRewardAdListener(): AdMobRewarded.RewardedAdListener {
//        return object : AdMobRewarded.RewardedAdListener {
//            override fun onLoad(successful: Boolean) {
//                D(TAG, "onLoad() > SUCCESSFUL => $successful")
//                progress.dismiss()
//                adMobRewarded.showAd(requireActivity())
//            }
//
//            override fun onAdShow(successful: Boolean, rewardPoints: Int, type: String?) {
//                if (successful) {
//                    D(TAG, "onAdShow() > SUCCESSFUL => $successful")
//                    val batchName: String = binding.editTextBatchName.text.toString()
//                    listener?.onBatchDownload(batchName, videoCount)
//                    dismiss()
//                }
//            }
//        }
//    }

    private fun initViews() {
        binding.slider.progress = 50
        binding.slider.max = 1000
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            binding.slider.min = 10
        }
        binding.slider.incrementProgressBy(10)
        binding.textViewVideoCount.text = videoCount.toString()
        binding.editTextBatchName.setText("${System.currentTimeMillis()}")
        binding.slider.setOnSeekBarChangeListener(seekBarListener { p1 ->
            val minProgress = 10
            var progress = if (p1 < minProgress) minProgress else p1
            progress /= 10
            progress *= 10
            videoCount = progress
            binding.textViewVideoCount.text = videoCount.toString()
        })
        binding.matBtnStartBatch.setOnClickListener(this)
        binding.matBtnBack.setOnClickListener(this)
        binding.matBtnDownloadSingle.setOnClickListener(this)
//        requireActivity().showSoftKeyboard(requireActivity(), binding.editTextBatchName)

    }

    override fun onClick(v: View?) {
        when (v?.id) {
            R.id.matBtnStartBatch -> {
                if (batchVM.hasActiveBatch()) {
                    requireActivity().makeToast("Already Batch Running")
                    return
                }
                startNewBatch()
            }

            R.id.matBtnBack -> {
                dismiss()
            }

            R.id.matBtnDownloadSingle -> {
                val url = binding.editTextUrl.text.toString()
                if (!url.contains("https://")) {
                    requireActivity().makeToast("Invalid URL")
                    return
                }
                fetchAndDownloadVideo(url)
            }
        }
    }

    private fun startNewBatch() {
        val batchName = binding.editTextBatchName.text.toString()
        if (batchName.isEmpty()) {
            requireActivity().makeToast("Enter Batch Name")
            return
        }
//        if (inAppSubs.isSubscribed) {
//            listener?.onBatchDownload(batchName, videoCount)
//            dismiss()
//            return
//        }

        val title = "TikTok Without Limit"
        val msg = "Do you want to download batch wihtout limit?"
        val primaryText = "Go PRO"
        val negativeText = "Watch Ad"
        val listener = KMaterialDialog.DialogClickListener { primary, dialog1 ->
            dialog1.dismiss()
            if (primary) {
                requireActivity().makeToast("GO PRO")
            } else {
//                progress.show()
//                adMobRewarded.load("rewarded_download")
//                adMobRewarded.setListener(getRewardAdListener())
            }
        }
        KMaterialDialog(requireActivity())
            .createDialog(title, msg, primaryText, negativeText, listener).show()
    }

    private fun fetchAndDownloadVideo(url: String) {
        val progress = KMaterialProgress(requireActivity())
        progress.show()
        batchVM.downloadVideo(url)
        batchVM.onDownloadVideo().observe(requireActivity()) {
            progress.dismiss()
            when (it) {
                0 -> requireActivity().makeToast("Something went wrong.")
                1 -> requireActivity().makeToast("Download started")
                2 -> requireActivity().makeToast("Download completed")
            }
        }
    }

    private fun seekBarListener(listener: (progress: Int) -> Unit): SeekBar.OnSeekBarChangeListener {
        return object : SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                listener.invoke(progress)
            }

            override fun onStartTrackingTouch(seekBar: SeekBar?) {

            }

            override fun onStopTrackingTouch(seekBar: SeekBar?) {

            }
        }
    }

    interface BatchDownloadListener {
        fun onBatchDownload(title: String, count: Int)
    }

    override fun getViewBinding(): FragmentDownloadBinding {
        return FragmentDownloadBinding.inflate(layoutInflater)
    }

    override fun getBottomStyle(): BottomStyle {
        return BottomStyle.FULL
    }


}
Editor is loading...