2018-12-23 21:04:54 +01:00
|
|
|
# Pleroma: A lightweight social networking server
|
2018-12-31 16:41:47 +01:00
|
|
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
2018-12-23 21:04:54 +01:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2018-11-18 18:04:42 +01:00
|
|
|
defmodule Pleroma.User.Info do
|
|
|
|
use Ecto.Schema
|
|
|
|
import Ecto.Changeset
|
|
|
|
|
|
|
|
embedded_schema do
|
2018-11-18 18:27:04 +01:00
|
|
|
field(:banner, :map, default: %{})
|
2018-12-02 11:20:38 +01:00
|
|
|
field(:background, :map, default: %{})
|
2018-11-18 18:27:04 +01:00
|
|
|
field(:source_data, :map, default: %{})
|
|
|
|
field(:note_count, :integer, default: 0)
|
|
|
|
field(:follower_count, :integer, default: 0)
|
|
|
|
field(:locked, :boolean, default: false)
|
2018-12-14 14:38:56 +01:00
|
|
|
field(:confirmation_pending, :boolean, default: false)
|
|
|
|
field(:confirmation_token, :string, default: nil)
|
2018-11-18 18:27:04 +01:00
|
|
|
field(:default_scope, :string, default: "public")
|
|
|
|
field(:blocks, {:array, :string}, default: [])
|
|
|
|
field(:domain_blocks, {:array, :string}, default: [])
|
2019-02-19 21:09:16 +01:00
|
|
|
field(:mutes, {:array, :string}, default: [])
|
2018-11-18 18:27:04 +01:00
|
|
|
field(:deactivated, :boolean, default: false)
|
|
|
|
field(:no_rich_text, :boolean, default: false)
|
|
|
|
field(:ap_enabled, :boolean, default: false)
|
|
|
|
field(:is_moderator, :boolean, default: false)
|
2018-12-01 09:03:16 +01:00
|
|
|
field(:is_admin, :boolean, default: false)
|
2019-02-04 13:28:35 +01:00
|
|
|
field(:show_role, :boolean, default: true)
|
2018-11-18 19:33:43 +01:00
|
|
|
field(:keys, :string, default: nil)
|
2018-11-20 20:12:39 +01:00
|
|
|
field(:settings, :map, default: nil)
|
2018-11-27 18:12:03 +01:00
|
|
|
field(:magic_key, :string, default: nil)
|
2018-11-27 18:37:46 +01:00
|
|
|
field(:uri, :string, default: nil)
|
2018-11-30 17:08:02 +01:00
|
|
|
field(:topic, :string, default: nil)
|
|
|
|
field(:hub, :string, default: nil)
|
2018-12-01 12:46:08 +01:00
|
|
|
field(:salmon, :string, default: nil)
|
Refactor pinned posts to use objects instead of activities. Despacito lyrics in the description don't open
Ay
Fonsi
DY
Oh
Oh no, oh no
Oh yeah
Diridiri, dirididi Daddy
Go
Sí, sabes que ya llevo un rato mirándote
Tengo que bailar contigo hoy (DY)
Vi que tu mirada ya estaba llamándome
Muéstrame el camino que yo voy (Oh)
Tú, tú eres el imán y yo soy el metal
Me voy acercando y voy armando el plan
Solo con pensarlo se acelera el pulso (Oh yeah)
Ya, ya me está gustando más de lo normal
Todos mis sentidos van pidiendo más
Esto hay que tomarlo sin ningún apuro
Despacito
Quiero respirar tu cuello despacito
Deja que te diga cosas al oído
Para que te acuerdes si no estás conmigo
Despacito
Quiero desnudarte a besos despacito
Firmo en las paredes de tu laberinto
Y hacer de tu cuerpo todo un manuscrito (sube, sube, sube)
(Sube, sube)
Quiero ver bailar tu pelo
Quiero ser tu ritmo
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Déjame sobrepasar tus zonas de peligro
Hasta provocar tus gritos
Y que olvides tu apellido (Diridiri, dirididi Daddy)
Si te pido un beso ven dámelo
Yo sé que estás pensándolo
Llevo tiempo intentándolo
Mami, esto es dando y dándolo
Sabes que tu corazón conmigo te hace bom, bom
Sabes que esa beba está buscando de mi bom, bom
Ven prueba de mi boca para ver cómo te sabe
Quiero, quiero, quiero ver cuánto amor a ti te cabe
Yo no tengo prisa, yo me quiero dar el viaje
Empecemos lento, después salvaje
Pasito a pasito, suave suavecito
Nos vamos pegando poquito a poquito
Cuando tú me besas con esa destreza
Veo que eres malicia con delicadeza
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Y es que esa belleza es un rompecabezas
Pero pa montarlo aquí tengo la pieza
Despacito
Quiero respirar tu cuello despacito
Deja que te diga cosas al oído
Para que te acuerdes si no estás conmigo
Despacito
Quiero desnudarte a besos despacito
Firmo en las paredes de tu laberinto
Y hacer de tu cuerpo todo un manuscrito (sube, sube, sube)
(Sube, sube)
Quiero ver bailar tu pelo
Quiero ser tu ritmo
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Déjame sobrepasar tus zonas de peligro
Hasta provocar tus gritos
Y que olvides tu apellido
Despacito
Vamos a hacerlo en una playa en Puerto Rico
Hasta que las olas griten "¡ay, bendito!"
Para que mi sello se quede contigo
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Hasta provocar tus gritos
Y que olvides tu apellido (DY)
Despacito
2019-01-26 16:29:43 +01:00
|
|
|
field(:pinned_objects, {:array, :string}, default: [])
|
2019-02-03 19:24:09 +01:00
|
|
|
field(:hide_followers, :boolean, default: false)
|
2019-02-06 23:34:44 +01:00
|
|
|
field(:hide_follows, :boolean, default: false)
|
2019-01-16 16:15:46 +01:00
|
|
|
field(:pinned_activities, {:array, :string}, default: [])
|
2019-02-03 12:31:12 +01:00
|
|
|
field(:flavour, :string, default: nil)
|
2018-12-01 12:00:53 +01:00
|
|
|
|
|
|
|
# Found in the wild
|
|
|
|
# ap_id -> Where is this used?
|
|
|
|
# bio -> Where is this used?
|
|
|
|
# avatar -> Where is this used?
|
|
|
|
# fqn -> Where is this used?
|
|
|
|
# host -> Where is this used?
|
|
|
|
# subject _> Where is this used?
|
2018-11-18 18:04:42 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def set_activation_status(info, deactivated) do
|
|
|
|
params = %{deactivated: deactivated}
|
|
|
|
|
|
|
|
info
|
|
|
|
|> cast(params, [:deactivated])
|
|
|
|
|> validate_required([:deactivated])
|
|
|
|
end
|
2018-11-18 18:17:56 +01:00
|
|
|
|
|
|
|
def add_to_note_count(info, number) do
|
2018-11-18 18:52:21 +01:00
|
|
|
set_note_count(info, info.note_count + number)
|
|
|
|
end
|
|
|
|
|
|
|
|
def set_note_count(info, number) do
|
2018-11-18 18:27:04 +01:00
|
|
|
params = %{note_count: Enum.max([0, number])}
|
2018-11-18 18:17:56 +01:00
|
|
|
|
|
|
|
info
|
|
|
|
|> cast(params, [:note_count])
|
|
|
|
|> validate_required([:note_count])
|
|
|
|
end
|
2018-11-18 18:24:16 +01:00
|
|
|
|
|
|
|
def set_follower_count(info, number) do
|
|
|
|
params = %{follower_count: Enum.max([0, number])}
|
|
|
|
|
|
|
|
info
|
|
|
|
|> cast(params, [:follower_count])
|
|
|
|
|> validate_required([:follower_count])
|
|
|
|
end
|
2018-11-18 18:40:31 +01:00
|
|
|
|
2019-02-19 21:09:16 +01:00
|
|
|
def set_mutes(info, mutes) do
|
|
|
|
params = %{mutes: mutes}
|
|
|
|
|
|
|
|
info
|
|
|
|
|> cast(params, [:mutes])
|
|
|
|
|> validate_required([:mutes])
|
|
|
|
end
|
|
|
|
|
2018-11-18 18:40:31 +01:00
|
|
|
def set_blocks(info, blocks) do
|
|
|
|
params = %{blocks: blocks}
|
|
|
|
|
|
|
|
info
|
|
|
|
|> cast(params, [:blocks])
|
|
|
|
|> validate_required([:blocks])
|
|
|
|
end
|
|
|
|
|
2019-02-19 21:09:16 +01:00
|
|
|
def add_to_mutes(info, muted) do
|
|
|
|
set_mutes(info, Enum.uniq([muted | info.mutes]))
|
|
|
|
end
|
|
|
|
|
|
|
|
def remove_from_mutes(info, muted) do
|
|
|
|
set_mutes(info, List.delete(info.mutes, muted))
|
|
|
|
end
|
|
|
|
|
2018-11-18 18:40:31 +01:00
|
|
|
def add_to_block(info, blocked) do
|
|
|
|
set_blocks(info, Enum.uniq([blocked | info.blocks]))
|
|
|
|
end
|
|
|
|
|
|
|
|
def remove_from_block(info, blocked) do
|
|
|
|
set_blocks(info, List.delete(info.blocks, blocked))
|
|
|
|
end
|
2018-11-18 19:33:43 +01:00
|
|
|
|
2018-11-18 21:40:52 +01:00
|
|
|
def set_domain_blocks(info, domain_blocks) do
|
|
|
|
params = %{domain_blocks: domain_blocks}
|
|
|
|
|
|
|
|
info
|
|
|
|
|> cast(params, [:domain_blocks])
|
|
|
|
|> validate_required([:domain_blocks])
|
|
|
|
end
|
|
|
|
|
|
|
|
def add_to_domain_block(info, domain_blocked) do
|
|
|
|
set_domain_blocks(info, Enum.uniq([domain_blocked | info.domain_blocks]))
|
|
|
|
end
|
|
|
|
|
|
|
|
def remove_from_domain_block(info, domain_blocked) do
|
|
|
|
set_domain_blocks(info, List.delete(info.domain_blocks, domain_blocked))
|
|
|
|
end
|
|
|
|
|
2018-11-18 19:33:43 +01:00
|
|
|
def set_keys(info, keys) do
|
|
|
|
params = %{keys: keys}
|
|
|
|
|
|
|
|
info
|
|
|
|
|> cast(params, [:keys])
|
|
|
|
|> validate_required([:keys])
|
|
|
|
end
|
2018-11-18 21:40:52 +01:00
|
|
|
|
|
|
|
def remote_user_creation(info, params) do
|
|
|
|
info
|
2018-11-20 19:07:01 +01:00
|
|
|
|> cast(params, [
|
|
|
|
:ap_enabled,
|
|
|
|
:source_data,
|
|
|
|
:banner,
|
2018-11-27 18:12:03 +01:00
|
|
|
:locked,
|
2018-11-27 18:37:46 +01:00
|
|
|
:magic_key,
|
2018-11-30 17:08:02 +01:00
|
|
|
:uri,
|
|
|
|
:hub,
|
2018-12-01 12:46:08 +01:00
|
|
|
:topic,
|
2019-02-14 08:10:27 +01:00
|
|
|
:salmon,
|
|
|
|
:pinned_objects
|
2018-11-20 19:07:01 +01:00
|
|
|
])
|
2018-11-18 21:40:52 +01:00
|
|
|
end
|
2018-11-18 22:15:03 +01:00
|
|
|
|
2018-11-27 17:42:45 +01:00
|
|
|
def user_upgrade(info, params) do
|
|
|
|
info
|
|
|
|
|> cast(params, [
|
|
|
|
:ap_enabled,
|
|
|
|
:source_data,
|
|
|
|
:banner,
|
2018-11-27 18:12:03 +01:00
|
|
|
:locked,
|
2019-02-14 08:10:27 +01:00
|
|
|
:magic_key,
|
|
|
|
:pinned_objects
|
2018-11-27 17:42:45 +01:00
|
|
|
])
|
|
|
|
end
|
|
|
|
|
2019-02-14 08:10:27 +01:00
|
|
|
def user_update(info, params) do
|
|
|
|
info
|
|
|
|
|> cast(params, [:pinned_objects])
|
|
|
|
end
|
|
|
|
|
2018-11-30 17:07:37 +01:00
|
|
|
def profile_update(info, params) do
|
|
|
|
info
|
|
|
|
|> cast(params, [
|
|
|
|
:locked,
|
|
|
|
:no_rich_text,
|
2018-12-01 12:00:53 +01:00
|
|
|
:default_scope,
|
2018-12-05 19:22:40 +01:00
|
|
|
:banner,
|
2019-02-06 23:34:44 +01:00
|
|
|
:hide_follows,
|
2019-02-03 19:24:09 +01:00
|
|
|
:hide_followers,
|
2019-02-04 13:28:35 +01:00
|
|
|
:background,
|
|
|
|
:show_role
|
2018-11-30 17:07:37 +01:00
|
|
|
])
|
|
|
|
end
|
|
|
|
|
2018-12-19 14:27:16 +01:00
|
|
|
def confirmation_changeset(info, :confirmed) do
|
|
|
|
confirmation_changeset(info, %{
|
2018-12-17 15:28:58 +01:00
|
|
|
confirmation_pending: false,
|
|
|
|
confirmation_token: nil
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2018-12-19 14:27:16 +01:00
|
|
|
def confirmation_changeset(info, :unconfirmed) do
|
|
|
|
confirmation_changeset(info, %{
|
2018-12-17 15:28:58 +01:00
|
|
|
confirmation_pending: true,
|
|
|
|
confirmation_token: :crypto.strong_rand_bytes(32) |> Base.url_encode64()
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2018-12-19 14:27:16 +01:00
|
|
|
def confirmation_changeset(info, params) do
|
2018-12-14 14:38:56 +01:00
|
|
|
cast(info, params, [:confirmation_pending, :confirmation_token])
|
|
|
|
end
|
|
|
|
|
2018-12-01 10:40:01 +01:00
|
|
|
def mastodon_profile_update(info, params) do
|
|
|
|
info
|
|
|
|
|> cast(params, [
|
|
|
|
:locked,
|
|
|
|
:banner
|
|
|
|
])
|
|
|
|
end
|
|
|
|
|
2018-12-16 12:15:34 +01:00
|
|
|
def mastodon_settings_update(info, settings) do
|
|
|
|
params = %{settings: settings}
|
|
|
|
|
2018-12-06 15:42:07 +01:00
|
|
|
info
|
|
|
|
|> cast(params, [:settings])
|
2018-12-16 12:15:34 +01:00
|
|
|
|> validate_required([:settings])
|
2018-12-06 15:42:07 +01:00
|
|
|
end
|
|
|
|
|
2019-02-03 12:31:12 +01:00
|
|
|
def mastodon_flavour_update(info, flavour) do
|
|
|
|
params = %{flavour: flavour}
|
|
|
|
|
|
|
|
info
|
|
|
|
|> cast(params, [:flavour])
|
|
|
|
|> validate_required([:flavour])
|
|
|
|
end
|
|
|
|
|
2018-11-20 20:12:39 +01:00
|
|
|
def set_source_data(info, source_data) do
|
|
|
|
params = %{source_data: source_data}
|
|
|
|
|
2018-11-18 22:15:03 +01:00
|
|
|
info
|
2018-11-20 20:12:39 +01:00
|
|
|
|> cast(params, [:source_data])
|
|
|
|
|> validate_required([:source_data])
|
2018-11-18 22:15:03 +01:00
|
|
|
end
|
2018-12-01 09:03:16 +01:00
|
|
|
|
|
|
|
def admin_api_update(info, params) do
|
|
|
|
info
|
|
|
|
|> cast(params, [
|
|
|
|
:is_moderator,
|
2019-02-04 13:28:35 +01:00
|
|
|
:is_admin,
|
|
|
|
:show_role
|
2018-12-01 09:03:16 +01:00
|
|
|
])
|
|
|
|
end
|
2019-01-07 14:45:33 +01:00
|
|
|
|
2019-01-29 19:57:53 +01:00
|
|
|
def add_pinned_object(info, %Pleroma.Object{data: %{"id" => ap_id}}, local \\ true) do
|
Refactor pinned posts to use objects instead of activities. Despacito lyrics in the description don't open
Ay
Fonsi
DY
Oh
Oh no, oh no
Oh yeah
Diridiri, dirididi Daddy
Go
Sí, sabes que ya llevo un rato mirándote
Tengo que bailar contigo hoy (DY)
Vi que tu mirada ya estaba llamándome
Muéstrame el camino que yo voy (Oh)
Tú, tú eres el imán y yo soy el metal
Me voy acercando y voy armando el plan
Solo con pensarlo se acelera el pulso (Oh yeah)
Ya, ya me está gustando más de lo normal
Todos mis sentidos van pidiendo más
Esto hay que tomarlo sin ningún apuro
Despacito
Quiero respirar tu cuello despacito
Deja que te diga cosas al oído
Para que te acuerdes si no estás conmigo
Despacito
Quiero desnudarte a besos despacito
Firmo en las paredes de tu laberinto
Y hacer de tu cuerpo todo un manuscrito (sube, sube, sube)
(Sube, sube)
Quiero ver bailar tu pelo
Quiero ser tu ritmo
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Déjame sobrepasar tus zonas de peligro
Hasta provocar tus gritos
Y que olvides tu apellido (Diridiri, dirididi Daddy)
Si te pido un beso ven dámelo
Yo sé que estás pensándolo
Llevo tiempo intentándolo
Mami, esto es dando y dándolo
Sabes que tu corazón conmigo te hace bom, bom
Sabes que esa beba está buscando de mi bom, bom
Ven prueba de mi boca para ver cómo te sabe
Quiero, quiero, quiero ver cuánto amor a ti te cabe
Yo no tengo prisa, yo me quiero dar el viaje
Empecemos lento, después salvaje
Pasito a pasito, suave suavecito
Nos vamos pegando poquito a poquito
Cuando tú me besas con esa destreza
Veo que eres malicia con delicadeza
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Y es que esa belleza es un rompecabezas
Pero pa montarlo aquí tengo la pieza
Despacito
Quiero respirar tu cuello despacito
Deja que te diga cosas al oído
Para que te acuerdes si no estás conmigo
Despacito
Quiero desnudarte a besos despacito
Firmo en las paredes de tu laberinto
Y hacer de tu cuerpo todo un manuscrito (sube, sube, sube)
(Sube, sube)
Quiero ver bailar tu pelo
Quiero ser tu ritmo
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Déjame sobrepasar tus zonas de peligro
Hasta provocar tus gritos
Y que olvides tu apellido
Despacito
Vamos a hacerlo en una playa en Puerto Rico
Hasta que las olas griten "¡ay, bendito!"
Para que mi sello se quede contigo
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Hasta provocar tus gritos
Y que olvides tu apellido (DY)
Despacito
2019-01-26 16:29:43 +01:00
|
|
|
if ap_id not in info.pinned_objects do
|
2019-01-08 09:25:50 +01:00
|
|
|
max_pinned_statuses = Pleroma.Config.get([:instance, :max_pinned_statuses], 0)
|
Refactor pinned posts to use objects instead of activities. Despacito lyrics in the description don't open
Ay
Fonsi
DY
Oh
Oh no, oh no
Oh yeah
Diridiri, dirididi Daddy
Go
Sí, sabes que ya llevo un rato mirándote
Tengo que bailar contigo hoy (DY)
Vi que tu mirada ya estaba llamándome
Muéstrame el camino que yo voy (Oh)
Tú, tú eres el imán y yo soy el metal
Me voy acercando y voy armando el plan
Solo con pensarlo se acelera el pulso (Oh yeah)
Ya, ya me está gustando más de lo normal
Todos mis sentidos van pidiendo más
Esto hay que tomarlo sin ningún apuro
Despacito
Quiero respirar tu cuello despacito
Deja que te diga cosas al oído
Para que te acuerdes si no estás conmigo
Despacito
Quiero desnudarte a besos despacito
Firmo en las paredes de tu laberinto
Y hacer de tu cuerpo todo un manuscrito (sube, sube, sube)
(Sube, sube)
Quiero ver bailar tu pelo
Quiero ser tu ritmo
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Déjame sobrepasar tus zonas de peligro
Hasta provocar tus gritos
Y que olvides tu apellido (Diridiri, dirididi Daddy)
Si te pido un beso ven dámelo
Yo sé que estás pensándolo
Llevo tiempo intentándolo
Mami, esto es dando y dándolo
Sabes que tu corazón conmigo te hace bom, bom
Sabes que esa beba está buscando de mi bom, bom
Ven prueba de mi boca para ver cómo te sabe
Quiero, quiero, quiero ver cuánto amor a ti te cabe
Yo no tengo prisa, yo me quiero dar el viaje
Empecemos lento, después salvaje
Pasito a pasito, suave suavecito
Nos vamos pegando poquito a poquito
Cuando tú me besas con esa destreza
Veo que eres malicia con delicadeza
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Y es que esa belleza es un rompecabezas
Pero pa montarlo aquí tengo la pieza
Despacito
Quiero respirar tu cuello despacito
Deja que te diga cosas al oído
Para que te acuerdes si no estás conmigo
Despacito
Quiero desnudarte a besos despacito
Firmo en las paredes de tu laberinto
Y hacer de tu cuerpo todo un manuscrito (sube, sube, sube)
(Sube, sube)
Quiero ver bailar tu pelo
Quiero ser tu ritmo
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Déjame sobrepasar tus zonas de peligro
Hasta provocar tus gritos
Y que olvides tu apellido
Despacito
Vamos a hacerlo en una playa en Puerto Rico
Hasta que las olas griten "¡ay, bendito!"
Para que mi sello se quede contigo
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Hasta provocar tus gritos
Y que olvides tu apellido (DY)
Despacito
2019-01-26 16:29:43 +01:00
|
|
|
params = %{pinned_objects: [ap_id | info.pinned_objects]}
|
2019-01-07 14:45:33 +01:00
|
|
|
|
2019-01-29 19:57:53 +01:00
|
|
|
if local do
|
|
|
|
info
|
|
|
|
|> cast(params, [:pinned_objects])
|
|
|
|
|> validate_length(:pinned_objects,
|
|
|
|
max: max_pinned_statuses,
|
|
|
|
message: "You have already pinned the maximum number of statuses"
|
|
|
|
)
|
|
|
|
else
|
|
|
|
info
|
|
|
|
|> cast(params, [:pinned_objects])
|
|
|
|
end
|
2019-01-07 14:45:33 +01:00
|
|
|
else
|
|
|
|
change(info)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
Refactor pinned posts to use objects instead of activities. Despacito lyrics in the description don't open
Ay
Fonsi
DY
Oh
Oh no, oh no
Oh yeah
Diridiri, dirididi Daddy
Go
Sí, sabes que ya llevo un rato mirándote
Tengo que bailar contigo hoy (DY)
Vi que tu mirada ya estaba llamándome
Muéstrame el camino que yo voy (Oh)
Tú, tú eres el imán y yo soy el metal
Me voy acercando y voy armando el plan
Solo con pensarlo se acelera el pulso (Oh yeah)
Ya, ya me está gustando más de lo normal
Todos mis sentidos van pidiendo más
Esto hay que tomarlo sin ningún apuro
Despacito
Quiero respirar tu cuello despacito
Deja que te diga cosas al oído
Para que te acuerdes si no estás conmigo
Despacito
Quiero desnudarte a besos despacito
Firmo en las paredes de tu laberinto
Y hacer de tu cuerpo todo un manuscrito (sube, sube, sube)
(Sube, sube)
Quiero ver bailar tu pelo
Quiero ser tu ritmo
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Déjame sobrepasar tus zonas de peligro
Hasta provocar tus gritos
Y que olvides tu apellido (Diridiri, dirididi Daddy)
Si te pido un beso ven dámelo
Yo sé que estás pensándolo
Llevo tiempo intentándolo
Mami, esto es dando y dándolo
Sabes que tu corazón conmigo te hace bom, bom
Sabes que esa beba está buscando de mi bom, bom
Ven prueba de mi boca para ver cómo te sabe
Quiero, quiero, quiero ver cuánto amor a ti te cabe
Yo no tengo prisa, yo me quiero dar el viaje
Empecemos lento, después salvaje
Pasito a pasito, suave suavecito
Nos vamos pegando poquito a poquito
Cuando tú me besas con esa destreza
Veo que eres malicia con delicadeza
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Y es que esa belleza es un rompecabezas
Pero pa montarlo aquí tengo la pieza
Despacito
Quiero respirar tu cuello despacito
Deja que te diga cosas al oído
Para que te acuerdes si no estás conmigo
Despacito
Quiero desnudarte a besos despacito
Firmo en las paredes de tu laberinto
Y hacer de tu cuerpo todo un manuscrito (sube, sube, sube)
(Sube, sube)
Quiero ver bailar tu pelo
Quiero ser tu ritmo
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Déjame sobrepasar tus zonas de peligro
Hasta provocar tus gritos
Y que olvides tu apellido
Despacito
Vamos a hacerlo en una playa en Puerto Rico
Hasta que las olas griten "¡ay, bendito!"
Para que mi sello se quede contigo
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Que le enseñes a mi boca
Tus lugares favoritos (favoritos, favoritos baby)
Pasito a pasito, suave suavecito
Nos vamos pegando, poquito a poquito
Hasta provocar tus gritos
Y que olvides tu apellido (DY)
Despacito
2019-01-26 16:29:43 +01:00
|
|
|
def remove_pinned_object(info, %Pleroma.Object{data: %{"id" => ap_id}}) do
|
|
|
|
params = %{pinned_objects: List.delete(info.pinned_objects, ap_id)}
|
|
|
|
cast(info, params, [:pinned_objects])
|
2019-01-07 14:45:33 +01:00
|
|
|
end
|
2018-11-18 18:04:42 +01:00
|
|
|
end
|