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)