Compare commits
No commits in common. "2561febffdf341552c3553ee8300d0305e2b45a5" and "9617189e963b89f4353168e20d48ff086a0c53bb" have entirely different histories.
2561febffd
...
9617189e96
12 changed files with 45 additions and 202 deletions
|
@ -26,10 +26,10 @@ cache: &global_cache_policy
|
||||||
- _build
|
- _build
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
|
- check-changelog
|
||||||
- build
|
- build
|
||||||
- lint
|
- lint
|
||||||
- test
|
- test
|
||||||
- check-changelog
|
|
||||||
- benchmark
|
- benchmark
|
||||||
- deploy
|
- deploy
|
||||||
- release
|
- release
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Set default values on validators for transient objects (attachment, poll options)
|
|
|
@ -64,7 +64,7 @@ config :pleroma, Pleroma.Upload,
|
||||||
link_name: false,
|
link_name: false,
|
||||||
proxy_remote: false,
|
proxy_remote: false,
|
||||||
filename_display_max_length: 30,
|
filename_display_max_length: 30,
|
||||||
default_description: :filename,
|
default_description: nil,
|
||||||
base_url: nil
|
base_url: nil
|
||||||
|
|
||||||
config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
|
config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
|
||||||
|
@ -157,18 +157,18 @@ config :pleroma, :http,
|
||||||
adapter: []
|
adapter: []
|
||||||
|
|
||||||
config :pleroma, :instance,
|
config :pleroma, :instance,
|
||||||
name: "Shigusegubu",
|
name: "Pleroma",
|
||||||
email: "pleroma@hjkos.com",
|
email: "example@example.com",
|
||||||
notify_email: "pleroma@hjkos.com",
|
notify_email: "noreply@example.com",
|
||||||
description: "SigSegV, a pleroma instance",
|
description: "Pleroma: An efficient and flexible fediverse server",
|
||||||
short_description: "HJ's semi-personal instance",
|
short_description: "",
|
||||||
background_image: "/images/city.jpg",
|
background_image: "/images/city.jpg",
|
||||||
instance_thumbnail: "/instance/thumbnail.jpeg",
|
instance_thumbnail: "/instance/thumbnail.jpeg",
|
||||||
favicon: "/favicon.png",
|
favicon: "/favicon.png",
|
||||||
limit: 5_000,
|
limit: 5_000,
|
||||||
description_limit: 5_000,
|
description_limit: 5_000,
|
||||||
remote_limit: 100_000,
|
remote_limit: 100_000,
|
||||||
upload_limit: 200_000_000,
|
upload_limit: 16_000_000,
|
||||||
avatar_upload_limit: 2_000_000,
|
avatar_upload_limit: 2_000_000,
|
||||||
background_upload_limit: 4_000_000,
|
background_upload_limit: 4_000_000,
|
||||||
banner_upload_limit: 4_000_000,
|
banner_upload_limit: 4_000_000,
|
||||||
|
@ -187,16 +187,18 @@ config :pleroma, :instance,
|
||||||
federation_reachability_timeout_days: 7,
|
federation_reachability_timeout_days: 7,
|
||||||
allow_relay: true,
|
allow_relay: true,
|
||||||
public: true,
|
public: true,
|
||||||
quarantined_instances: [{ "pleroma.rareome.ga", "leaks private posts or sumshit i dont rember" }],
|
quarantined_instances: [],
|
||||||
static_dir: "instance/static/",
|
static_dir: "instance/static/",
|
||||||
allowed_post_formats: [
|
allowed_post_formats: [
|
||||||
"text/plain",
|
"text/plain",
|
||||||
|
"text/html",
|
||||||
|
"text/markdown",
|
||||||
"text/bbcode"
|
"text/bbcode"
|
||||||
],
|
],
|
||||||
autofollowed_nicknames: [],
|
autofollowed_nicknames: [],
|
||||||
autofollowing_nicknames: [],
|
autofollowing_nicknames: [],
|
||||||
max_pinned_statuses: 1,
|
max_pinned_statuses: 1,
|
||||||
attachment_links: true,
|
attachment_links: false,
|
||||||
max_report_comment_size: 1000,
|
max_report_comment_size: 1000,
|
||||||
report_strip_status: true,
|
report_strip_status: true,
|
||||||
safe_dm_mentions: false,
|
safe_dm_mentions: false,
|
||||||
|
@ -289,8 +291,8 @@ config :pleroma, :markup,
|
||||||
|
|
||||||
config :pleroma, :frontend_configurations,
|
config :pleroma, :frontend_configurations,
|
||||||
pleroma_fe: %{
|
pleroma_fe: %{
|
||||||
alwaysShowSubjectInput: false,
|
alwaysShowSubjectInput: true,
|
||||||
background: "/static/sigsegv_s.png",
|
background: "/images/city.jpg",
|
||||||
collapseMessageWithSubject: false,
|
collapseMessageWithSubject: false,
|
||||||
disableChat: false,
|
disableChat: false,
|
||||||
greentext: false,
|
greentext: false,
|
||||||
|
@ -303,18 +305,18 @@ config :pleroma, :frontend_configurations,
|
||||||
logo: "/static/logo.svg",
|
logo: "/static/logo.svg",
|
||||||
logoMargin: ".1em",
|
logoMargin: ".1em",
|
||||||
logoMask: true,
|
logoMask: true,
|
||||||
minimalScopesMode: true,
|
minimalScopesMode: false,
|
||||||
noAttachmentLinks: false,
|
noAttachmentLinks: false,
|
||||||
nsfwCensorImage: "",
|
nsfwCensorImage: "",
|
||||||
postContentType: "text/plain",
|
postContentType: "text/plain",
|
||||||
redirectRootLogin: "/main/friends",
|
redirectRootLogin: "/main/friends",
|
||||||
redirectRootNoLogin: "/main/all",
|
redirectRootNoLogin: "/main/all",
|
||||||
scopeCopy: false,
|
scopeCopy: true,
|
||||||
sidebarRight: false,
|
sidebarRight: false,
|
||||||
showFeaturesPanel: true,
|
showFeaturesPanel: true,
|
||||||
showInstanceSpecificPanel: true,
|
showInstanceSpecificPanel: false,
|
||||||
subjectLineBehavior: "noop",
|
subjectLineBehavior: "email",
|
||||||
theme: "sigsegv2",
|
theme: "pleroma-dark",
|
||||||
webPushNotifications: false
|
webPushNotifications: false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,23 +372,8 @@ config :pleroma, :mrf_hellthread,
|
||||||
|
|
||||||
config :pleroma, :mrf_simple,
|
config :pleroma, :mrf_simple,
|
||||||
media_removal: [],
|
media_removal: [],
|
||||||
media_nsfw: [
|
media_nsfw: [],
|
||||||
{ "preteengirls.biz", "pron or even cp" },
|
federated_timeline_removal: [],
|
||||||
{ "melalandia.tk", "i don't rember" },
|
|
||||||
{ "pl.smuglo.li", "instance is dead but i still remember, rip smuglo" },
|
|
||||||
{ "baraag.net", "pron" },
|
|
||||||
{ "humblr.social", "3dpd pron" },
|
|
||||||
{ "pawoo.net", "tasteful pron, mostly." },
|
|
||||||
{ "sinblr.com", "3dpd pron" }
|
|
||||||
],
|
|
||||||
federated_timeline_removal: [
|
|
||||||
{ "preteengirls.biz", "pron or even cp" },
|
|
||||||
{ "melalandia.tk", "i don't rember" },
|
|
||||||
{ "baraag.net", "pron" },
|
|
||||||
{ "humblr.social", "3dpd pron" },
|
|
||||||
{ "pawoo.net", "tasteful pron, mostly." },
|
|
||||||
{ "sinblr.com", "3dpd pron" }
|
|
||||||
],
|
|
||||||
report_removal: [],
|
report_removal: [],
|
||||||
reject: [],
|
reject: [],
|
||||||
followers_only: [],
|
followers_only: [],
|
||||||
|
@ -479,7 +466,7 @@ config :pleroma, :media_preview_proxy,
|
||||||
min_content_length: 100 * 1024
|
min_content_length: 100 * 1024
|
||||||
|
|
||||||
config :pleroma, :shout,
|
config :pleroma, :shout,
|
||||||
enabled: false,
|
enabled: true,
|
||||||
limit: 5_000
|
limit: 5_000
|
||||||
|
|
||||||
config :phoenix, :format_encoders, json: Jason, "activity+json": Jason
|
config :phoenix, :format_encoders, json: Jason, "activity+json": Jason
|
||||||
|
@ -809,7 +796,7 @@ config :pleroma, :web_cache_ttl,
|
||||||
|
|
||||||
config :pleroma, :modules, runtime_dir: "instance/modules"
|
config :pleroma, :modules, runtime_dir: "instance/modules"
|
||||||
|
|
||||||
config :pleroma, configurable_from_database: true
|
config :pleroma, configurable_from_database: false
|
||||||
|
|
||||||
config :pleroma, Pleroma.Repo,
|
config :pleroma, Pleroma.Repo,
|
||||||
parameters: [gin_fuzzy_search_limit: "500", jit: "off"],
|
parameters: [gin_fuzzy_search_limit: "500", jit: "off"],
|
||||||
|
@ -873,11 +860,8 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false
|
||||||
|
|
||||||
config :pleroma, :mrf,
|
config :pleroma, :mrf,
|
||||||
policies: [
|
policies: [
|
||||||
Pleroma.Web.ActivityPub.MRF.SimplePolicy,
|
|
||||||
Pleroma.Web.ActivityPub.MRF.HellthreadPolicy,
|
|
||||||
Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy,
|
|
||||||
Pleroma.Web.ActivityPub.MRF.TagPolicy,
|
|
||||||
Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy,
|
Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy,
|
||||||
|
Pleroma.Web.ActivityPub.MRF.TagPolicy,
|
||||||
Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy
|
Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy
|
||||||
],
|
],
|
||||||
transparency: true,
|
transparency: true,
|
||||||
|
|
|
@ -1,115 +0,0 @@
|
||||||
Advanced_Sorcery, /emoji/sgsgb/Advanced_Sorcery.png
|
|
||||||
FACE_QUAD, /emoji/sgsgb/FACE_QUAD.png
|
|
||||||
Yukkuri_Reimu, /emoji/sgsgb/Yukkuri_Reimu.png
|
|
||||||
a_to, /emoji/sgsgb/a_to.png
|
|
||||||
angrypirds, /emoji/sgsgb/angrypirds.png
|
|
||||||
annoying_dog_hole, /emoji/sgsgb/annoying_dog_hole.png
|
|
||||||
award_bios, /emoji/sgsgb/award_bios.png
|
|
||||||
bananya, /emoji/sgsgb/bananya.png
|
|
||||||
bandits, /emoji/sgsgb/bandits.png
|
|
||||||
blobcatknife, /emoji/sgsgb/blobcatknife.png
|
|
||||||
cacolaugh, /emoji/sgsgb/cacolaugh.png
|
|
||||||
catboythink, /emoji/sgsgb/catboythink.png
|
|
||||||
cirno_run, /emoji/sgsgb/cirno_run.png
|
|
||||||
debian, /emoji/sgsgb/debian.png
|
|
||||||
denton, /emoji/sgsgb/denton.png
|
|
||||||
denton_laugh, /emoji/sgsgb/denton_laugh.png
|
|
||||||
dio, /emoji/sgsgb/dio.png
|
|
||||||
dogcited, /emoji/sgsgb/dogcited.png
|
|
||||||
dong, /emoji/sgsgb/dong.png
|
|
||||||
duane, /emoji/sgsgb/duane.png
|
|
||||||
e, /emoji/sgsgb/e.png
|
|
||||||
energy_star, /emoji/sgsgb/energy_star.png
|
|
||||||
flynn_smirk, /emoji/sgsgb/flynn_smirk.png
|
|
||||||
furrythink, /emoji/sgsgb/furrythink.png
|
|
||||||
granddad, /emoji/sgsgb/granddad.png
|
|
||||||
heavy_losingeh, /emoji/sgsgb/heavy_losingeh.png
|
|
||||||
heavy_winninggreat, /emoji/sgsgb/heavy_winninggreat.png
|
|
||||||
herrington, /emoji/sgsgb/herrington.png
|
|
||||||
hogan, /emoji/sgsgb/hogan.png
|
|
||||||
hyperjoy, /emoji/sgsgb/hyperjoy.png
|
|
||||||
itisamystery, /emoji/sgsgb/itisamystery.png
|
|
||||||
jacobson, /emoji/sgsgb/jacobson.png
|
|
||||||
jake, /emoji/sgsgb/jake.png
|
|
||||||
jyushimatsu_think, /emoji/sgsgb/jyushimatsu_think.png
|
|
||||||
kinzo, /emoji/sgsgb/kinzo.png
|
|
||||||
kms, /emoji/sgsgb/kms.png
|
|
||||||
kokoko, /emoji/sgsgb/kokoko.png
|
|
||||||
loss, /emoji/sgsgb/loss.png
|
|
||||||
luck, /emoji/sgsgb/luck.png
|
|
||||||
lucknorm, /emoji/sgsgb/lucknorm.png
|
|
||||||
marko, /emoji/sgsgb/marko.png
|
|
||||||
megaman, /emoji/sgsgb/megaman.png
|
|
||||||
miyanozoom, /emoji/sgsgb/miyanozoom.png
|
|
||||||
monster_energy_ultra, /emoji/sgsgb/monster_energy_ultra.png
|
|
||||||
moraledn, /emoji/sgsgb/moraledn.png
|
|
||||||
moraleup, /emoji/sgsgb/moraleup.png
|
|
||||||
multiply, /emoji/sgsgb/multiply.png
|
|
||||||
mycomputer, /emoji/sgsgb/mycomputer.png
|
|
||||||
necromancy1, /emoji/sgsgb/necromancy1.png
|
|
||||||
necromancy2, /emoji/sgsgb/necromancy2.png
|
|
||||||
necromancy3, /emoji/sgsgb/necromancy3.png
|
|
||||||
nice, /emoji/sgsgb/nice.png
|
|
||||||
nyoron, /emoji/sgsgb/nyoron.png
|
|
||||||
ohgno, /emoji/sgsgb/ohgno.png
|
|
||||||
ohyes, /emoji/sgsgb/ohyes.png
|
|
||||||
orangeman, /emoji/sgsgb/orangeman.png
|
|
||||||
payyap, /emoji/sgsgb/payyap.png
|
|
||||||
pooh, /emoji/sgsgb/pooh.png
|
|
||||||
poohington, /emoji/sgsgb/poohington.png
|
|
||||||
poptepipic1, /emoji/sgsgb/poptepipic1.png
|
|
||||||
poptepipic10, /emoji/sgsgb/poptepipic10.png
|
|
||||||
poptepipic11, /emoji/sgsgb/poptepipic11.png
|
|
||||||
poptepipic12, /emoji/sgsgb/poptepipic12.png
|
|
||||||
poptepipic13, /emoji/sgsgb/poptepipic13.png
|
|
||||||
poptepipic14, /emoji/sgsgb/poptepipic14.png
|
|
||||||
poptepipic15, /emoji/sgsgb/poptepipic15.png
|
|
||||||
poptepipic16, /emoji/sgsgb/poptepipic16.png
|
|
||||||
poptepipic17, /emoji/sgsgb/poptepipic17.png
|
|
||||||
poptepipic18, /emoji/sgsgb/poptepipic18.png
|
|
||||||
poptepipic19, /emoji/sgsgb/poptepipic19.png
|
|
||||||
poptepipic2, /emoji/sgsgb/poptepipic2.png
|
|
||||||
poptepipic20, /emoji/sgsgb/poptepipic20.png
|
|
||||||
poptepipic21, /emoji/sgsgb/poptepipic21.png
|
|
||||||
poptepipic22, /emoji/sgsgb/poptepipic22.png
|
|
||||||
poptepipic23, /emoji/sgsgb/poptepipic23.png
|
|
||||||
poptepipic3, /emoji/sgsgb/poptepipic3.png
|
|
||||||
poptepipic4, /emoji/sgsgb/poptepipic4.png
|
|
||||||
poptepipic5, /emoji/sgsgb/poptepipic5.png
|
|
||||||
poptepipic6, /emoji/sgsgb/poptepipic6.png
|
|
||||||
poptepipic7, /emoji/sgsgb/poptepipic7.png
|
|
||||||
poptepipic8, /emoji/sgsgb/poptepipic8.png
|
|
||||||
poptepipic9, /emoji/sgsgb/poptepipic9.png
|
|
||||||
puke, /emoji/sgsgb/puke.png
|
|
||||||
quake_net, /emoji/sgsgb/quake_net.png
|
|
||||||
quake_ram, /emoji/sgsgb/quake_ram.png
|
|
||||||
ranger, /emoji/sgsgb/ranger.png
|
|
||||||
ranger_none, /emoji/sgsgb/ranger_none.png
|
|
||||||
risitas1, /emoji/sgsgb/risitas1.png
|
|
||||||
risitas2, /emoji/sgsgb/risitas2.png
|
|
||||||
rokalife, /emoji/sgsgb/rokalife.png
|
|
||||||
sandro, /emoji/sgsgb/sandro.png
|
|
||||||
scut, /emoji/sgsgb/scut.png
|
|
||||||
serious, /emoji/sgsgb/serious.png
|
|
||||||
shag, /emoji/sgsgb/shag.png
|
|
||||||
shinitai_i, /emoji/sgsgb/shinitai_i.png
|
|
||||||
shinitai_ni, /emoji/sgsgb/shinitai_ni.png
|
|
||||||
shinitai_shi, /emoji/sgsgb/shinitai_shi.png
|
|
||||||
shinitai_ta, /emoji/sgsgb/shinitai_ta.png
|
|
||||||
shotging, /emoji/sgsgb/shotging.png
|
|
||||||
skelethor, /emoji/sgsgb/skelethor.png
|
|
||||||
smug_marisa, /emoji/sgsgb/smug_marisa.png
|
|
||||||
spurdo, /emoji/sgsgb/spurdo.png
|
|
||||||
stalkers, /emoji/sgsgb/stalkers.png
|
|
||||||
tenshi_eating_corndog, /emoji/sgsgb/tenshi_eating_corndog.png
|
|
||||||
thinkingwat, /emoji/sgsgb/thinkingwat.png
|
|
||||||
thnk, /emoji/sgsgb/thnk.png
|
|
||||||
tobdog, /emoji/sgsgb/tobdog.png
|
|
||||||
todd, /emoji/sgsgb/todd.png
|
|
||||||
trash, /emoji/sgsgb/trash.png
|
|
||||||
tuturu, /emoji/sgsgb/tuturu.png
|
|
||||||
tux, /emoji/sgsgb/tux.png
|
|
||||||
uwot, /emoji/sgsgb/uwot.png
|
|
||||||
uwot2, /emoji/sgsgb/uwot2.png
|
|
||||||
uwot3, /emoji/sgsgb/uwot3.png
|
|
||||||
vanpeek, /emoji/sgsgb/vanpeek.png
|
|
|
@ -6,7 +6,6 @@ After=network.target postgresql.service
|
||||||
ExecReload=/bin/kill $MAINPID
|
ExecReload=/bin/kill $MAINPID
|
||||||
KillMode=process
|
KillMode=process
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
StandardOutput=journal
|
|
||||||
|
|
||||||
; Name of the user that runs the Pleroma service.
|
; Name of the user that runs the Pleroma service.
|
||||||
User=pleroma
|
User=pleroma
|
||||||
|
@ -15,11 +14,9 @@ Environment="MIX_ENV=prod"
|
||||||
|
|
||||||
; Make sure that all paths fit your installation.
|
; Make sure that all paths fit your installation.
|
||||||
; Path to the home directory of the user running the Pleroma service.
|
; Path to the home directory of the user running the Pleroma service.
|
||||||
Environment="HOME=/home/pleroma"
|
Environment="HOME=/var/lib/pleroma"
|
||||||
; Path to the folder containing the Pleroma installation.
|
; Path to the folder containing the Pleroma installation.
|
||||||
WorkingDirectory=/home/pleroma/pleroma
|
WorkingDirectory=/opt/pleroma
|
||||||
; Path to the environment file. the file contains RELEASE_COOKIE and etc
|
|
||||||
;EnvironmentFile=/opt/pleroma/config/pleroma.env
|
|
||||||
; Path to the Mix binary.
|
; Path to the Mix binary.
|
||||||
ExecStart=/usr/bin/mix phx.server
|
ExecStart=/usr/bin/mix phx.server
|
||||||
|
|
||||||
|
@ -27,7 +24,7 @@ ExecStart=/usr/bin/mix phx.server
|
||||||
; Use private /tmp and /var/tmp folders inside a new file system namespace, which are discarded after the process stops.
|
; Use private /tmp and /var/tmp folders inside a new file system namespace, which are discarded after the process stops.
|
||||||
PrivateTmp=true
|
PrivateTmp=true
|
||||||
; The /home, /root, and /run/user folders can not be accessed by this service anymore. If your Pleroma user has its home folder in one of the restricted places, or use one of these folders as its working directory, you have to set this to false.
|
; The /home, /root, and /run/user folders can not be accessed by this service anymore. If your Pleroma user has its home folder in one of the restricted places, or use one of these folders as its working directory, you have to set this to false.
|
||||||
ProtectHome=false
|
ProtectHome=true
|
||||||
; Mount /usr, /boot, and /etc as read-only for processes invoked by this service.
|
; Mount /usr, /boot, and /etc as read-only for processes invoked by this service.
|
||||||
ProtectSystem=full
|
ProtectSystem=full
|
||||||
; Sets up a new /dev mount for the process and only adds API pseudo devices like /dev/null, /dev/zero or /dev/random but not physical devices. Disabled by default because it may not work on devices like the Raspberry Pi.
|
; Sets up a new /dev mount for the process and only adds API pseudo devices like /dev/null, /dev/zero or /dev/random but not physical devices. Disabled by default because it may not work on devices like the Raspberry Pi.
|
||||||
|
|
|
@ -90,17 +90,6 @@ defmodule Pleroma.Constants do
|
||||||
do: ~r/^[^[:cntrl:] ()<>@,;:\\"\/\[\]?=]+\/[^[:cntrl:] ()<>@,;:\\"\/\[\]?=]+(; .*)?$/
|
do: ~r/^[^[:cntrl:] ()<>@,;:\\"\/\[\]?=]+\/[^[:cntrl:] ()<>@,;:\\"\/\[\]?=]+(; .*)?$/
|
||||||
)
|
)
|
||||||
|
|
||||||
const(activity_json_canonical_mime_type,
|
|
||||||
do: "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
|
|
||||||
)
|
|
||||||
|
|
||||||
const(activity_json_mime_types,
|
|
||||||
do: [
|
|
||||||
"application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"",
|
|
||||||
"application/activity+json"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
const(upload_object_types, do: ["Document", "Image"])
|
const(upload_object_types, do: ["Document", "Image"])
|
||||||
|
|
||||||
const(activity_json_canonical_mime_type,
|
const(activity_json_canonical_mime_type,
|
||||||
|
|
|
@ -12,13 +12,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do
|
||||||
@primary_key false
|
@primary_key false
|
||||||
embedded_schema do
|
embedded_schema do
|
||||||
field(:id, :string)
|
field(:id, :string)
|
||||||
field(:type, :string, default: "Link")
|
field(:type, :string)
|
||||||
field(:mediaType, ObjectValidators.MIME, default: "application/octet-stream")
|
field(:mediaType, ObjectValidators.MIME, default: "application/octet-stream")
|
||||||
field(:name, :string)
|
field(:name, :string)
|
||||||
field(:blurhash, :string)
|
field(:blurhash, :string)
|
||||||
|
|
||||||
embeds_many :url, UrlObjectValidator, primary_key: false do
|
embeds_many :url, UrlObjectValidator, primary_key: false do
|
||||||
field(:type, :string, default: "Link")
|
field(:type, :string)
|
||||||
field(:href, ObjectValidators.Uri)
|
field(:href, ObjectValidators.Uri)
|
||||||
field(:mediaType, ObjectValidators.MIME, default: "application/octet-stream")
|
field(:mediaType, ObjectValidators.MIME, default: "application/octet-stream")
|
||||||
field(:width, :integer)
|
field(:width, :integer)
|
||||||
|
|
|
@ -14,10 +14,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionOptionsValidator do
|
||||||
|
|
||||||
embeds_one :replies, Replies, primary_key: false do
|
embeds_one :replies, Replies, primary_key: false do
|
||||||
field(:totalItems, :integer)
|
field(:totalItems, :integer)
|
||||||
field(:type, :string, default: "Collection")
|
field(:type, :string)
|
||||||
end
|
end
|
||||||
|
|
||||||
field(:type, :string, default: "Note")
|
field(:type, :string)
|
||||||
end
|
end
|
||||||
|
|
||||||
def changeset(struct, data) do
|
def changeset(struct, data) do
|
||||||
|
|
|
@ -13,8 +13,10 @@ defmodule Pleroma.Web.PleromaAPI.BookmarkFolderView do
|
||||||
%{
|
%{
|
||||||
id: folder.id |> to_string(),
|
id: folder.id |> to_string(),
|
||||||
name: folder.name,
|
name: folder.name,
|
||||||
emoji: folder.emoji,
|
emoji: get_emoji(folder.emoji),
|
||||||
emoji_url: get_emoji_url(folder.emoji)
|
source: %{
|
||||||
|
emoji: folder.emoji
|
||||||
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -22,18 +24,18 @@ defmodule Pleroma.Web.PleromaAPI.BookmarkFolderView do
|
||||||
render_many(folders, __MODULE__, "show.json", Map.delete(opts, :folders))
|
render_many(folders, __MODULE__, "show.json", Map.delete(opts, :folders))
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_emoji_url(nil) do
|
defp get_emoji(nil) do
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_emoji_url(emoji) do
|
defp get_emoji(emoji) do
|
||||||
if Emoji.unicode?(emoji) do
|
if Emoji.unicode?(emoji) do
|
||||||
nil
|
emoji
|
||||||
else
|
else
|
||||||
emoji = Emoji.get(emoji)
|
emoji = Emoji.get(emoji)
|
||||||
|
|
||||||
if emoji != nil do
|
if emoji != nil do
|
||||||
Endpoint.url() |> URI.merge(emoji.file) |> to_string()
|
Endpoint.url() |> URI.merge(emoji.relative_url) |> to_string()
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,7 +33,9 @@ defmodule Pleroma.Web.PleromaAPI.BookmarkFolderControllerTest do
|
||||||
"id" => ^folder_id,
|
"id" => ^folder_id,
|
||||||
"name" => "Bookmark folder",
|
"name" => "Bookmark folder",
|
||||||
"emoji" => nil,
|
"emoji" => nil,
|
||||||
"emoji_url" => nil
|
"source" => %{
|
||||||
|
"emoji" => nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
] = result
|
] = result
|
||||||
end
|
end
|
||||||
|
@ -55,24 +57,9 @@ defmodule Pleroma.Web.PleromaAPI.BookmarkFolderControllerTest do
|
||||||
assert %{
|
assert %{
|
||||||
"name" => "Bookmark folder",
|
"name" => "Bookmark folder",
|
||||||
"emoji" => "📁",
|
"emoji" => "📁",
|
||||||
"emoji_url" => nil
|
"source" => %{
|
||||||
} = result
|
"emoji" => "📁"
|
||||||
end
|
}
|
||||||
|
|
||||||
test "it creates a bookmark folder with custom emoji", %{conn: conn} do
|
|
||||||
result =
|
|
||||||
conn
|
|
||||||
|> put_req_header("content-type", "application/json")
|
|
||||||
|> post("/api/v1/pleroma/bookmark_folders", %{
|
|
||||||
name: "Bookmark folder",
|
|
||||||
emoji: ":firefox:"
|
|
||||||
})
|
|
||||||
|> json_response_and_validate_schema(200)
|
|
||||||
|
|
||||||
assert %{
|
|
||||||
"name" => "Bookmark folder",
|
|
||||||
"emoji" => ":firefox:",
|
|
||||||
"emoji_url" => "http://localhost:4001/emoji/Firefox.gif"
|
|
||||||
} = result
|
} = result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue