1+ package com.barryzea.niloclient.promo
2+
3+ import android.annotation.SuppressLint
4+ import android.os.Bundle
5+ import android.view.*
6+ import androidx.appcompat.app.AppCompatActivity
7+ import androidx.fragment.app.Fragment
8+ import com.barryzea.niloclient.R
9+ import com.barryzea.niloclient.databinding.FragmentPromoBinding
10+ import com.barryzea.niloclient.interfaces.MainAux
11+ import com.bumptech.glide.Glide
12+ import com.bumptech.glide.load.engine.DiskCacheStrategy
13+ import com.google.android.material.badge.BadgeDrawable
14+ import com.google.android.material.badge.BadgeUtils
15+ import com.google.firebase.ktx.Firebase
16+ import com.google.firebase.remoteconfig.ktx.remoteConfig
17+ import com.google.firebase.remoteconfig.ktx.remoteConfigSettings
18+ import kotlin.math.roundToInt
19+
20+ /* ***
21+ * Project Nilo Client
22+ * Created by Barry Zea H. on 28/02/2022.
23+ * Copyright (c) All rights reserved.
24+ ***/
25+
26+ class PromoFragment : Fragment () {
27+ private var bind: FragmentPromoBinding ? = null
28+ private var title: String = " "
29+
30+ override fun onCreateView (
31+ inflater : LayoutInflater ,
32+ container : ViewGroup ? ,
33+ savedInstanceState : Bundle ?
34+ ): View ? {
35+ bind= FragmentPromoBinding .inflate(inflater, container, false )
36+ bind?.let {
37+ return it.root
38+ }
39+
40+ return super .onCreateView(inflater, container, savedInstanceState)
41+
42+ }
43+
44+ override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
45+ super .onViewCreated(view, savedInstanceState)
46+ configToolbar()
47+ configRemoteConfig()
48+ }
49+ private fun configToolbar (){
50+ (activity as ? MainAux )?.showButton(false )
51+ (activity as ? AppCompatActivity )?.apply {
52+ supportActionBar?.setDisplayHomeAsUpEnabled(true )
53+ title= supportActionBar?.title
54+ supportActionBar?.title= getString(R .string.promo_fragment_title)
55+ setHasOptionsMenu(true )
56+
57+ }
58+ }
59+ @SuppressLint(" UnsafeOptInUsageError" )
60+ private fun configRemoteConfig () {
61+ val remoteConfig= Firebase .remoteConfig
62+ remoteConfig.setDefaultsAsync(R .xml.remote_config_default)
63+ // solicitar y extraer datos de remoteconfig
64+ remoteConfig.fetchAndActivate()
65+
66+ // si no hay ningún error se extraerán los datos ya sea desde el servidor o localmente
67+ .addOnCompleteListener {
68+ if (it.isSuccessful){
69+
70+ val percentage= remoteConfig.getDouble(" percentage" )
71+ val photoUrl= remoteConfig.getString(" photoUrl" )
72+ val message= remoteConfig.getString(" message" )
73+ bind?.let {
74+ it.tvMessage.text= message
75+ it.tvPercentage.text= String .format(" %s0%%" , (percentage).roundToInt().toString())
76+
77+ Glide .with (this )
78+ .load(photoUrl)
79+ .diskCacheStrategy(DiskCacheStrategy .NONE )
80+ .placeholder(R .drawable.ic_access_time)
81+ .error(R .drawable.ic_offer)
82+ .centerCrop()
83+ .into(it.imgPromo)
84+ }
85+
86+ }
87+ }
88+ }
89+
90+ override fun onPrepareOptionsMenu (menu : Menu ) {
91+ menu.clear()
92+ super .onPrepareOptionsMenu(menu)
93+ }
94+ override fun onOptionsItemSelected (item : MenuItem ): Boolean {
95+ if (item.itemId == android.R .id.home){
96+ activity?.onBackPressed()
97+ }
98+ return super .onOptionsItemSelected(item)
99+ }
100+ override fun onDestroyView () {
101+ super .onDestroyView()
102+ (activity as ? MainAux )?.showButton(true )
103+ (activity as ? AppCompatActivity )?.apply {
104+ supportActionBar?.setDisplayHomeAsUpEnabled(false )
105+ supportActionBar?.title= title
106+ setHasOptionsMenu(false )
107+ }
108+ bind= null
109+ }
110+ }
0 commit comments