diff --git a/index.html b/index.html
index ba072eda..c910d2a3 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,10 @@
+ Pleroma
+
+
+
diff --git a/src/assets/nsfw.png b/src/assets/nsfw.png
index d2513776..e0d1fc2a 100644
Binary files a/src/assets/nsfw.png and b/src/assets/nsfw.png differ
diff --git a/src/components/status_content/status_content.vue b/src/components/status_content/status_content.vue
index 90bfaf40..62ebecda 100644
--- a/src/components/status_content/status_content.vue
+++ b/src/components/status_content/status_content.vue
@@ -192,8 +192,8 @@ $status-margin: 0.75em;
object-fit: contain;
&.emoji {
- width: 32px;
- height: 32px;
+ width: 50px;
+ height: 50px;
}
}
diff --git a/src/i18n/en.json b/src/i18n/en.json
index b4a154ae..33f90cb5 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -313,6 +313,8 @@
"collapse_subject": "Collapse posts with subjects",
"composing": "Composing",
"confirm_new_password": "Confirm new password",
+ "current_avatar": "Your current avatar",
+ "current_mascot": "Your current mascot",
"current_password": "Current password",
"mutes_and_blocks": "Mutes and Blocks",
"data_import_export_tab": "Data import / export",
@@ -433,8 +435,10 @@
"search_user_to_mute": "Search whom you want to mute",
"security_tab": "Security",
"scope_copy": "Copy scope when replying (DMs are always copied)",
+ "mascot": "Mastodon FE Mascot",
"minimal_scopes_mode": "Minimize post scope selection options",
"set_new_avatar": "Set new avatar",
+ "set_new_mascot": "Set new mascot",
"set_new_profile_background": "Set new profile background",
"set_new_profile_banner": "Set new profile banner",
"reset_avatar": "Reset avatar",
diff --git a/src/modules/users.js b/src/modules/users.js
index 8a764a16..d783f882 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -88,6 +88,10 @@ const showReblogs = (store, userId) => {
.then((relationship) => store.commit('updateUserRelationship', [relationship]))
}
+const fetchMascot = (store) => {
+ return store.rootState.api.backendInteractor.fetchMascot()
+ .then(({ url }) => store.commit('updateMascot', url))
+}
const muteDomain = (store, domain) => {
return store.rootState.api.backendInteractor.muteDomain({ domain })
.then(() => store.commit('addDomainMute', domain))
@@ -186,6 +190,9 @@ export const mutations = {
state.currentUser.muteIds.push(muteId)
}
},
+ updateMascot (state, mascotUrl) {
+ state.currentUser.mascot = mascotUrl
+ },
saveDomainMutes (state, domainMutes) {
state.currentUser.domainMutes = domainMutes
},
@@ -332,6 +339,9 @@ const users = {
unmuteUsers (store, ids = []) {
return Promise.all(ids.map(id => unmuteUser(store, id)))
},
+ fetchMascot (store) {
+ return fetchMascot(store)
+ },
fetchDomainMutes (store) {
return store.rootState.api.backendInteractor.fetchDomainMutes()
.then((domainMutes) => {
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index 436b8b0a..f640fd1e 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -76,6 +76,7 @@ const MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`
const MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`
const MASTODON_SEARCH_2 = `/api/v2/search`
const MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'
+const MASTODON_MASCOT_URL = '/api/v1/pleroma/mascot'
const MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'
const MASTODON_STREAMING = '/api/v1/streaming'
const MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'
@@ -855,6 +856,20 @@ const unmuteUser = ({ id, credentials }) => {
return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })
}
+const fetchMascot = ({ credentials }) => {
+ return promisedRequest({ url: MASTODON_MASCOT_URL, credentials })
+}
+
+const updateMascot = ({ mascot, credentials }) => {
+ const form = new FormData()
+ form.append('file', mascot)
+ return fetch(MASTODON_MASCOT_URL, {
+ headers: authHeaders(credentials),
+ method: 'PUT',
+ body: form
+ }).then((data) => data.json())
+}
+
const subscribeUser = ({ id, credentials }) => {
return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })
}
@@ -1335,6 +1350,8 @@ const apiService = {
fetchPoll,
fetchFavoritedByUsers,
fetchRebloggedByUsers,
+ fetchMascot,
+ updateMascot,
fetchEmojiReactions,
reactWithEmoji,
unreactWithEmoji,
diff --git a/static/config.json b/static/config.json
index f59e645a..56807ba6 100644
--- a/static/config.json
+++ b/static/config.json
@@ -24,6 +24,6 @@
"showInstanceSpecificPanel": false,
"sidebarRight": false,
"subjectLineBehavior": "email",
- "theme": "pleroma-dark",
+ "theme": "ihatebeingalive",
"webPushNotifications": false
}
diff --git a/static/font/css/lato.css b/static/font/css/lato.css
new file mode 100644
index 00000000..b75a48d7
--- /dev/null
+++ b/static/font/css/lato.css
@@ -0,0 +1,13 @@
+/* lato-regular - latin */
+@font-face {
+ font-family: 'Lato';
+ font-style: normal;
+ font-weight: 400;
+ src: url('../font/lato-v15-latin-regular.eot'); /* IE9 Compat Modes */
+ src: local('Lato Regular'), local('Lato-Regular'),
+ url('../font/lato-v15-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('../font/lato-v15-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+ url('../font/lato-v15-latin-regular.woff') format('woff'), /* Modern Browsers */
+ url('../font/lato-v15-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('../font/lato-v15-latin-regular.svg#Lato') format('svg'); /* Legacy iOS */
+}
diff --git a/static/font/font/lato-v15-latin-regular.eot b/static/font/font/lato-v15-latin-regular.eot
new file mode 100644
index 00000000..c6413069
Binary files /dev/null and b/static/font/font/lato-v15-latin-regular.eot differ
diff --git a/static/font/font/lato-v15-latin-regular.svg b/static/font/font/lato-v15-latin-regular.svg
new file mode 100644
index 00000000..55b43fb8
--- /dev/null
+++ b/static/font/font/lato-v15-latin-regular.svg
@@ -0,0 +1,435 @@
+
+
+
diff --git a/static/font/font/lato-v15-latin-regular.ttf b/static/font/font/lato-v15-latin-regular.ttf
new file mode 100644
index 00000000..3c2d417e
Binary files /dev/null and b/static/font/font/lato-v15-latin-regular.ttf differ
diff --git a/static/font/font/lato-v15-latin-regular.woff b/static/font/font/lato-v15-latin-regular.woff
new file mode 100644
index 00000000..189a0feb
Binary files /dev/null and b/static/font/font/lato-v15-latin-regular.woff differ
diff --git a/static/font/font/lato-v15-latin-regular.woff2 b/static/font/font/lato-v15-latin-regular.woff2
new file mode 100644
index 00000000..6904b664
Binary files /dev/null and b/static/font/font/lato-v15-latin-regular.woff2 differ
diff --git a/static/font/lato-v15-latin-regular.eot b/static/font/lato-v15-latin-regular.eot
new file mode 100644
index 00000000..c6413069
Binary files /dev/null and b/static/font/lato-v15-latin-regular.eot differ
diff --git a/static/font/lato-v15-latin-regular.svg b/static/font/lato-v15-latin-regular.svg
new file mode 100644
index 00000000..55b43fb8
--- /dev/null
+++ b/static/font/lato-v15-latin-regular.svg
@@ -0,0 +1,435 @@
+
+
+
diff --git a/static/font/lato-v15-latin-regular.ttf b/static/font/lato-v15-latin-regular.ttf
new file mode 100644
index 00000000..3c2d417e
Binary files /dev/null and b/static/font/lato-v15-latin-regular.ttf differ
diff --git a/static/font/lato-v15-latin-regular.woff b/static/font/lato-v15-latin-regular.woff
new file mode 100644
index 00000000..189a0feb
Binary files /dev/null and b/static/font/lato-v15-latin-regular.woff differ
diff --git a/static/font/lato-v15-latin-regular.woff2 b/static/font/lato-v15-latin-regular.woff2
new file mode 100644
index 00000000..6904b664
Binary files /dev/null and b/static/font/lato-v15-latin-regular.woff2 differ
diff --git a/static/logo.png b/static/logo.png
new file mode 100644
index 00000000..14aaf4a3
Binary files /dev/null and b/static/logo.png differ
diff --git a/static/styles.json b/static/styles.json
index 23f57c65..feceb47e 100644
--- a/static/styles.json
+++ b/static/styles.json
@@ -12,6 +12,7 @@
"redmond-xxi": "/static/themes/redmond-xxi.json",
"breezy-dark": "/static/themes/breezy-dark.json",
"breezy-light": "/static/themes/breezy-light.json",
+ "ihatebeingalive": "/static/themes/ihatebeingalive.json",
"mammal": "/static/themes/mammal.json",
"paper": "/static/themes/paper.json"
}
diff --git a/static/themes/ihatebeingalive.json b/static/themes/ihatebeingalive.json
new file mode 100644
index 00000000..ce468825
--- /dev/null
+++ b/static/themes/ihatebeingalive.json
@@ -0,0 +1,151 @@
+{
+ "_pleroma_theme_version": 2,
+ "name": "ihatebeingalive",
+ "theme": {
+ "fonts": {
+ "interface": {
+ "family": "Lato"
+ }
+ },
+ "shadows": {
+ "panel": [
+ {
+ "x": "1",
+ "y": "2",
+ "blur": "6",
+ "spread": 0,
+ "color": "#000000",
+ "alpha": 0.6
+ }
+ ],
+ "button": [
+ {
+ "x": 0,
+ "y": "0",
+ "blur": "0",
+ "spread": "1",
+ "color": "#ffffff",
+ "alpha": "0.15",
+ "inset": true
+ },
+ {
+ "x": "1",
+ "y": "1",
+ "blur": "1",
+ "spread": 0,
+ "color": "#000000",
+ "alpha": "0.3",
+ "inset": false
+ }
+ ],
+ "panelHeader": [
+ {
+ "x": 0,
+ "y": "40",
+ "blur": "40",
+ "spread": "-40",
+ "inset": true,
+ "color": "#ffffff",
+ "alpha": "0.1"
+ }
+ ],
+ "buttonHover": [
+ {
+ "x": 0,
+ "y": "0",
+ "blur": 0,
+ "spread": "1",
+ "color": "--link",
+ "alpha": "0.3",
+ "inset": true
+ },
+ {
+ "x": "1",
+ "y": "1",
+ "blur": "1",
+ "spread": 0,
+ "color": "#000000",
+ "alpha": "0.3",
+ "inset": false
+ }
+ ],
+ "buttonPressed": [
+ {
+ "x": 0,
+ "y": 0,
+ "blur": "0",
+ "spread": "50",
+ "color": "--faint",
+ "alpha": 1,
+ "inset": true
+ },
+ {
+ "x": 0,
+ "y": "0",
+ "blur": 0,
+ "spread": "1",
+ "color": "#ffffff",
+ "alpha": 0.2,
+ "inset": true
+ },
+ {
+ "x": "1",
+ "y": "1",
+ "blur": 0,
+ "spread": 0,
+ "color": "#000000",
+ "alpha": "0.3",
+ "inset": false
+ }
+ ],
+ "input": [
+ {
+ "x": 0,
+ "y": "0",
+ "blur": 0,
+ "spread": "1",
+ "color": "#FFFFFF",
+ "alpha": "0.2",
+ "inset": true
+ }
+ ]
+ },
+ "opacity": {
+ "bg": "0.99",
+ "btn": "0.9",
+ "input": "0.9",
+ "panel": "0.75",
+ "border": "0.55"
+ },
+ "colors": {
+ "bg": "#070e1b",
+ "text": "#bebebe",
+ "link": "#3daee9",
+ "fg": "#31363b",
+ "fgLink": "#543fe7",
+ "panelLink": "#38a5ed",
+ "input": "#1b1d1f",
+ "topBar": "#0d1a31",
+ "topBarLink": "#bebebe",
+ "btn": "#1b1d1f",
+ "panel": "#0d1a31",
+ "alertError": "#ff090f",
+ "badgeNotification": "#024297",
+ "border": "#363c41",
+ "cRed": "#c42d38",
+ "cBlue": "#ffffff",
+ "cGreen": "#22b325",
+ "cOrange": "#d7d720"
+ },
+ "radii": {
+ "btn": "4",
+ "input": "4",
+ "checkbox": "1",
+ "panel": "9",
+ "avatar": "3",
+ "avatarAlt": "4",
+ "tooltip": "7",
+ "attachment": "3"
+ }
+ }
+}