File size: 4,747 Bytes
677bddc
af7e87c
 
 
 
e64103c
af7e87c
 
c92c00c
 
e64103c
af7e87c
e64103c
9deaf74
 
 
 
8caca6b
cfdb6ac
8caca6b
 
 
7fb5605
 
9deaf74
 
 
 
 
 
 
 
 
 
 
 
 
 
e64103c
9deaf74
e64103c
9deaf74
 
 
 
 
 
e64103c
9deaf74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e64103c
9deaf74
 
 
 
e64103c
 
9deaf74
 
e64103c
7fb10be
af7e87c
 
 
fd6597a
e64103c
 
db6a841
fd6597a
1a0655f
e64103c
fd6597a
e64103c
 
 
 
fd6597a
 
 
 
42eddfc
fd6597a
 
9deaf74
7fdea9e
677bddc
e64103c
74066d3
e64103c
 
6d9d79f
3ea2bff
e64103c
503430e
2e89a7d
e64103c
7fb5605
3f0e8e5
9deaf74
74066d3
ba94470
2e89a7d
a107ccd
503430e
e64103c
7c4ec8d
af7e87c
74066d3
19c25ff
af7e87c
9deaf74
e43c0da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import gradio as gr

get_local_storage = """

    function() {

      globalThis.setStorage = (key, value)=>{

        localStorage.setItem(key, value)

      }

       globalThis.getStorage = (key, value)=>{

        obtencion = localStorage.getItem(key)

        console.log("Dentro de getStorage:", obtencion)

        return obtencion

      }



       globalThis.cleanCred = (key, value)=>{

        localStorage.setItem(key, value)

      }



      globalThis.deductStore = (key, value)=>{

        new_value = ParseInt(value) - 1

        localStorage.setItem(key, new_value)

      }



      //Todo ésto lo hará al cargarse el load.



      //El token se deberá obtener de todas formas: 

      // Obtener la URL actual

        const urlActual = window.location;

        console.log("Hola")

        console.log(urlActual)



        // Buscar el parámetro "tkn"

        const urlParams = new URLSearchParams(window.location.search);

        console.log("Ésto es urlParams: ", urlParams)



        const token = urlParams.get('tkn');



        console.log("El token enviado es: ", token)



       if (!localStorage.getItem('tokens')) {

        console.log("Primera vez en el sistema, se le dan 5 tokens")

        localStorage.setItem('tokens', 5);

        //Para llegar a éste punto significa que no habían entrado sin embargo traían tokens, lo cual no se puede y está trucado.

        if(token){ 

            localStorage.setItem('trp', 'Ok')

            localStorage.setItem('tokens', 0)

            console.log("El usuario cargo la url sin haber usado el sitio, queda flagged como trampa y se le otorgan 0 tokens.")

            }

        }

        else

        {

            console.log("Ya tiene hecho el espacio para tokens, no es la primera vez que visita. Si podemos recargar, solo aquí:")

            console.log("token es: ", token)

            trap = localStorage.getItem('trp') 

            console.log("trap es: ", trap)

            credused = localStorage.getItem('credused')

            console.log("credused es: ", credused)



        if (token && trap === null && credused === null || token && trap === null && credused === "0") {

            console.log('Token encontrado hoy:', token);

            tokens_actuales = localStorage.getItem('tokens');

            console.log("Los tokens actuales que tienes son: ", tokens_actuales)

            nueva_cantidad = parseInt(tokens_actuales) + parseInt(token)

            localStorage.setItem('tokens', nueva_cantidad);

            localStorage.setItem('credused', 1)

            console.log("El usuario cargo sus tokens, se marca que ya usó ese crédito.")

        } 

        else { console.log('No se encontró el token'); }





        }



        //Al final obten cuantos tokens tiene.

        const legado = localStorage.getItem('tokens');



        



        return legado;

       

      }

    """

def predict(text_input, tokens_total):
   
    resultado_texto = "Hola " + text_input + ", éste es el resultado." 
    print("Esto es tokens_total: ", tokens_total)
    
    if int(tokens_total) > 0:
        print("Saldo Positivo")
        return tokens_total, resultado_texto, gr.Button(interactive=True), gr.Button(visible=False)

    else:
    
        print("Saldo negativo")
        return tokens_total, resultado_texto, gr.Button(interactive=False), gr.Button(visible=True)
    
def deduct(tokens_total):
  
   print("Estoy en deduct. Y esto es tokens_total: ", tokens_total)
   tokens_actualizados = int(tokens_total) - 1
   return tokens_actualizados


with gr.Blocks() as block:

    tokens_total = gr.Text(label="Tokens Disponibles", interactive = True)
    text_input = gr.Text(label="Tu Nombre:")
    resultadoFinal = gr.Text(label="Resultado")
   

    #text_input.change(None, tokens_label, tokens_label, js="(v)=>{ getStorage('text_input',v) }")
    #tokens_label.change(None, tokens_total, None, _js="(v)=>{ setStorage('otro',v) }")
    
    #resultadoFinal.change(None, text_input, resultadoFinal, js="(v)=>{ getStorage('text_input') }")
    btn = gr.Button("Enviar", icon="aiicon.png")
    payBtn = gr.Button("Buy Tokens", icon="aiicon.png", interactive = True, visible = True)

    btn.click(fn=predict, inputs=[text_input, tokens_total], outputs=[tokens_total, resultadoFinal, btn, payBtn])
    resultadoFinal.change(None, tokens_total, outputs=[tokens_total], _js="(v)=>{ deductStore('tokens', v) }")

    payBtn.click(None, inputs=None, outputs=None, _js="(v)=>{ cleanCred('credused',0) }" )
    
    block.load(
        None,
        inputs=None,
        outputs=[tokens_total],
        _js=get_local_storage,
    )

block.launch(debug=True)