Boton que indica si el navegador actual está suscrito a las notificaciones de el anime.
This commit is contained in:
parent
39e4e09a08
commit
2ce8e06be9
104
src/components/Anime/panel-descarga/boton-nuevos-eps.vue
Normal file
104
src/components/Anime/panel-descarga/boton-nuevos-eps.vue
Normal file
@ -0,0 +1,104 @@
|
||||
<template lang="pug">
|
||||
span#indicador(
|
||||
:style="estilos"
|
||||
@mouseenter="cambiarIcono()" @mouseleave="cambiarIcono()" @click="cambiarSubs()"
|
||||
)
|
||||
i.material-icons {{ botonActivo }}
|
||||
//
|
||||
</template>
|
||||
|
||||
<script lang="coffee">
|
||||
import YAML from "yaml"
|
||||
|
||||
colorPrim = "#009961"
|
||||
colorSec = "#ea486a"
|
||||
|
||||
export default
|
||||
name: "boton-nuevos-eps"
|
||||
data: ->
|
||||
botonActivo: "" # check - clear
|
||||
animacion: ""
|
||||
animacionActiva: false
|
||||
color: ""
|
||||
suscrito: false
|
||||
props:
|
||||
opcion:
|
||||
type: Number
|
||||
required: true
|
||||
computed:
|
||||
estilos: -> "background-color: #{@color}; #{@animacion}"
|
||||
methods:
|
||||
cambiarIcono: ->
|
||||
unless @animacionActiva
|
||||
@color =
|
||||
if @color is colorSec then colorPrim else colorSec
|
||||
@botonActivo =
|
||||
if @botonActivo is "clear" then "check" else "clear"
|
||||
cambiarSubs: ->
|
||||
vm = this
|
||||
escala = 1
|
||||
vm.botonActivo = ""
|
||||
vm.animacionActiva = true
|
||||
vm.animacion = "transform: scale(#{0.3}, #{0.3})"
|
||||
animacion = setInterval (() ->
|
||||
vm.animacion = "transform: scale(#{escala}, #{escala})"
|
||||
escala = if escala is 1 then 0.3 else 1
|
||||
), 500
|
||||
|
||||
ruta = if @suscrito then "/n/desubscribir/" else "/n/subscribir/"
|
||||
|
||||
res = await fetch ruta,
|
||||
method: "POST"
|
||||
headers:
|
||||
"Content-Type": "application/x-www-form-urlencoded"
|
||||
body: "opcion_ID=#{vm.opcion}&navegador_hash=#{vm.$store.state.navegador_hash}"
|
||||
respuesta = YAML.parse (await res.text())
|
||||
|
||||
clearInterval animacion
|
||||
vm.animacion = ""
|
||||
vm.animacionActiva = false
|
||||
|
||||
if respuesta.exito
|
||||
vm.color = if vm.suscrito then colorSec else colorPrim
|
||||
vm.botonActivo = if vm.suscrito then "clear" else "check"
|
||||
if vm.suscrito
|
||||
vm.$store.commit "eliminarSuscripcion", vm.opcion.toString()
|
||||
else
|
||||
vm.$store.commit "agregarSuscripcion", vm.opcion.toString()
|
||||
vm.suscrito = !vm.suscrito
|
||||
else
|
||||
alert "Hubo un error. Intentalo más tarde."
|
||||
vm.color = if vm.suscrito then colorPrim else colorSec
|
||||
vm.botonActivo = if vm.suscrito then "check" else "clear"
|
||||
|
||||
created: ->
|
||||
suscrito = @$store.state.suscripciones[@opcion]?
|
||||
@suscrito = suscrito
|
||||
@color = if suscrito then colorPrim else colorSec
|
||||
@botonActivo = if suscrito then "checked" else "clear"
|
||||
|
||||
|
||||
#
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped lang="sass">
|
||||
@import "../../../assets/sass/variables"
|
||||
|
||||
#indicador
|
||||
display: inline-block
|
||||
width: 30px
|
||||
height: 30px
|
||||
background-color: $colorSecundario
|
||||
cursor: pointer
|
||||
margin: 0 10px
|
||||
border-radius: 15px
|
||||
transition: transform 500ms ease-in-out, background-color 500ms ease-out
|
||||
i
|
||||
color: white
|
||||
display: inline-block
|
||||
font-size: 24px
|
||||
padding: 3px
|
||||
|
||||
//
|
||||
</style>
|
Loading…
Reference in New Issue
Block a user