logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://hacktivis.me/git/pleroma-fe.git
commit: 79d02bddbe2b77574844b8ade7a09043c31b1c6b
parent 8ade11783aa4740a2cff61f27938f3408c3e0eb0
Author: marcin mikołajczak <git@mkljczk.pl>
Date:   Sun, 13 Feb 2022 19:07:49 +0100

Birthdays

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>

Diffstat:

Msrc/components/settings_modal/tabs/profile_tab.js6+++++-
Msrc/components/settings_modal/tabs/profile_tab.scss5+++++
Msrc/components/settings_modal/tabs/profile_tab.vue12++++++++++++
Msrc/components/user_profile/user_profile.js11+++++++++--
Msrc/components/user_profile/user_profile.vue14++++++++++++++
Msrc/i18n/en.json5+++++
Msrc/i18n/pl.json9+++++++--
Msrc/services/entity_normalizer/entity_normalizer.service.js3+++
8 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/src/components/settings_modal/tabs/profile_tab.js b/src/components/settings_modal/tabs/profile_tab.js @@ -29,6 +29,8 @@ const ProfileTab = { newLocked: this.$store.state.users.currentUser.locked, newNoRichText: this.$store.state.users.currentUser.no_rich_text, newDefaultScope: this.$store.state.users.currentUser.default_scope, + newBirthday: this.$store.state.users.currentUser.birthday, + showBirthday: this.$store.state.users.currentUser.show_birthday, newFields: this.$store.state.users.currentUser.fields.map(field => ({ name: field.name, value: field.value })), hideFollows: this.$store.state.users.currentUser.hide_follows, hideFollowers: this.$store.state.users.currentUser.hide_followers, @@ -132,7 +134,9 @@ const ProfileTab = { allow_following_move: this.allowFollowingMove, hide_follows_count: this.hideFollowsCount, hide_followers_count: this.hideFollowersCount, - show_role: this.showRole + show_role: this.showRole, + birthday: this.newBirthday || null, + show_birthday: this.showBirthday /* eslint-enable camelcase */ } }).then((user) => { this.newFields.splice(user.fields.length) diff --git a/src/components/settings_modal/tabs/profile_tab.scss b/src/components/settings_modal/tabs/profile_tab.scss @@ -124,4 +124,9 @@ padding: 0 0.5em; } } + + .birthday-input { + display: block; + margin-bottom: 1em; + } } diff --git a/src/components/settings_modal/tabs/profile_tab.vue b/src/components/settings_modal/tabs/profile_tab.vue @@ -95,6 +95,18 @@ {{ $t('settings.discoverable') }} </Checkbox> </p> + <div> + <p>{{ $t('settings.birthday.label') }}</p> + <input + id="birthday" + v-model="newBirthday" + type="date" + class="birthday-input" + > + <Checkbox v-model="showBirthday"> + {{ $t('settings.birthday.show_birthday') }} + </Checkbox> + </div> <div v-if="maxFields > 0"> <p>{{ $t('settings.profile_fields.label') }}</p> <div diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js @@ -7,13 +7,16 @@ import TabSwitcher from 'src/components/tab_switcher/tab_switcher.js' import RichContent from 'src/components/rich_content/rich_content.jsx' import List from '../list/list.vue' import withLoadMore from '../../hocs/with_load_more/with_load_more' +import localeService from 'src/services/locale/locale.service.js' import { library } from '@fortawesome/fontawesome-svg-core' import { - faCircleNotch + faCircleNotch, + faBirthdayCake } from '@fortawesome/free-solid-svg-icons' library.add( - faCircleNotch + faCircleNotch, + faBirthdayCake ) const FollowerList = withLoadMore({ @@ -75,6 +78,10 @@ const UserProfile = { }, followersTabVisible () { return this.isUs || !this.user.hide_followers + }, + formattedBirthday () { + const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale) + return this.user.birthday && new Date(Date.parse(this.user.birthday)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' }) } }, methods: { diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue @@ -11,6 +11,16 @@ :allow-zooming-avatar="true" rounded="top" /> + <span + v-if="!!user.birthday" + class="user-birthday" + > + <FAIcon + class="fa-old-padding" + icon="birthday-cake" + /> + {{ $t('user_card.birthday', { birthday: formattedBirthday }) }} + </span> <div v-if="user.fields_html && user.fields_html.length > 0" class="user-profile-fields" @@ -138,6 +148,10 @@ flex: 2; flex-basis: 500px; + .user-birthday { + margin: 0 0.75em 0.5em; + } + .user-profile-fields { margin: 0 0.5em; diff --git a/src/i18n/en.json b/src/i18n/en.json @@ -399,6 +399,10 @@ "name": "Label", "value": "Content" }, + "birthday": { + "label": "Birthday", + "show_birthday": "Show my birthday" + }, "use_contain_fit": "Don't crop the attachment in thumbnails", "name": "Name", "name_bio": "Name & bio", @@ -774,6 +778,7 @@ "hide_repeats": "Hide repeats", "show_repeats": "Show repeats", "bot": "Bot", + "birthday": "Born {birthday}", "admin_menu": { "moderation": "Moderation", "grant_admin": "Grant Admin", diff --git a/src/i18n/pl.json b/src/i18n/pl.json @@ -633,7 +633,11 @@ "reply_visibility_following_short": "Pokazuj odpowiedzi obserwującym", "reply_visibility_self_short": "Pokazuj odpowiedzi tylko do mnie", "sensitive_by_default": "Domyślnie oznaczaj wpisy jako wrażliwe", - "hide_shoutbox": "Ukryj shoutbox instancji" + "hide_shoutbox": "Ukryj shoutbox instancji", + "birthday": { + "label": "Urodziny", + "show_birthday": "Pokazuj moją datę urodzenia" + } }, "time": { "day": "{0} dzień", @@ -770,7 +774,8 @@ "highlight": { "disabled": "Bez wyróżnienia" }, - "bot": "Bot" + "bot": "Bot", + "birthday": "Urodzony(-a) {birthday}" }, "user_profile": { "timeline_title": "Oś czasu użytkownika", diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js @@ -118,6 +118,8 @@ export const parseUser = (data) => { } else { output.role = 'member' } + + output.birthday = data.pleroma.birthday } if (data.source) { @@ -128,6 +130,7 @@ export const parseUser = (data) => { output.no_rich_text = data.source.pleroma.no_rich_text output.show_role = data.source.pleroma.show_role output.discoverable = data.source.pleroma.discoverable + output.show_birthday = data.pleroma.show_birthday } }