diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index cc2f3978..a9b8b602 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -10,7 +10,7 @@
{{ user.name }}
- Follows you!
+ {{ $t('user_card.follows_you') }}
@{{ user.screen_name }}
diff --git a/src/components/user_card_content/user_card_content.vue b/src/components/user_card_content/user_card_content.vue
index baa71cd0..8aef7e8a 100644
--- a/src/components/user_card_content/user_card_content.vue
+++ b/src/components/user_card_content/user_card_content.vue
@@ -19,27 +19,43 @@
- Follows you!
+ {{ $t('user_card.follows_you') }}
- Following!
+ {{ $t('user_card.following') }}
- Follow
+ {{ $t('user_card.follow') }}
- Muted
+
+ {{ $t('user_card.muted') }}
+
- Mute
+
+ {{ $t('user_card.mute') }}
+
+
+
+
+
+
+ {{ $t('user_card.blocked') }}
+
+
+
+
+ {{ $t('user_card.block') }}
+
-
Statuses
-
Statuses
-
{{user.statuses_count}} {{dailyAvg}} per day
+
{{ $t('user_card.statuses') }}
+
{{ $t('user_card.statuses') }}
+
{{user.statuses_count}} {{dailyAvg}} {{ $t('user_card.per_day') }}
@@ -109,6 +125,16 @@
store.state.api.backendInteractor.unfollowUser(this.user.id)
.then((unfollowedUser) => store.commit('addNewUsers', [unfollowedUser]))
},
+ blockUser () {
+ const store = this.$store
+ store.state.api.backendInteractor.blockUser(this.user.id)
+ .then((blockedUser) => store.commit('addNewUsers', [blockedUser]))
+ },
+ unblockUser () {
+ const store = this.$store
+ store.state.api.backendInteractor.unblockUser(this.user.id)
+ .then((unblockedUser) => store.commit('addNewUsers', [unblockedUser]))
+ },
toggleMute () {
const store = this.$store
store.commit('setMuted', {user: this.user, muted: !this.user.muted})
diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue
index 11da79e4..003ee3bd 100644
--- a/src/components/user_settings/user_settings.vue
+++ b/src/components/user_settings/user_settings.vue
@@ -1,53 +1,53 @@
- User Settings
+ {{$t('settings.user_settings')}}
-
Name & Bio
-
Name
+
{{$t('settings.name_bio')}}
+
{{$t('settings.name')}}
-
Bio
+
{{$t('settings.bio')}}
-
Submit
+
{{$t('general.submit')}}
-
Avatar
-
Your current avatar:
+
{{$t('settings.avatar')}}
+
{{$t('settings.current_avatar')}}
-
Set new avatar:
+
{{$t('settings.set_new_avatar')}}
-
Submit
+
{{$t('general.submit')}}
-
Profile Banner
-
Your current profile banner:
+
{{$t('settings.profile_banner')}}
+
{{$t('settings.current_profile_banner')}}
-
Set new profile banner:
+
{{$t('settings.set_new_profile_banner')}}
-
Submit
+
{{$t('general.submit')}}
-
Profile Background
-
Set new profile background:
+
{{$t('settings.profile_background')}}
+
{{$t('settings.set_new_profile_background')}}
-
Submit
+
{{$t('general.submit')}}
diff --git a/src/i18n/messages.js b/src/i18n/messages.js
new file mode 100644
index 00000000..da2f936a
--- /dev/null
+++ b/src/i18n/messages.js
@@ -0,0 +1,480 @@
+const de = {
+ nav: {
+ timeline: 'Zeitleiste',
+ mentions: 'Erwähnungen',
+ public_tl: 'Lokale Zeitleiste',
+ twkn: 'Das gesamte Netzwerk'
+ },
+ user_card: {
+ follows_you: 'Folgt dir!',
+ following: 'Folgst du!',
+ follow: 'Folgen',
+ statuses: 'Beiträge',
+ mute: 'Stummschalten',
+ muted: 'Stummgeschaltet',
+ followers: 'Folgende',
+ followees: 'Folgt',
+ per_day: 'pro Tag'
+ },
+ timeline: {
+ show_new: 'Zeige Neuere',
+ error_fetching: 'Error beim Laden',
+ up_to_date: 'Aktuell',
+ load_older: 'Lade ältere Beiträge'
+ },
+ settings: {
+ user_settings: 'Benutzereinstellungen',
+ name_bio: 'Name & Bio',
+ name: 'Name',
+ bio: 'Bio',
+ avatar: 'Avatar',
+ current_avatar: 'Dein derzeitiger Avatar',
+ set_new_avatar: 'Setze neuen Avatar',
+ profile_banner: 'Profil Banner',
+ current_profile_banner: 'Dein derzeitiger Profil Banner',
+ set_new_profile_banner: 'Setze neuen Profil Banner',
+ profile_background: 'Profil Hintergrund',
+ set_new_profile_background: 'Setze neuen Profil Hintergrund',
+ settings: 'Einstellungen',
+ theme: 'Theme',
+ filtering: 'Filter',
+ filtering_explanation: 'Alle Beiträge die diese Wörter enthalten werden ausgeblendet. Ein Wort pro Zeile.',
+ attachments: 'Anhänge',
+ hide_attachments_in_tl: 'Anhänge in der Timeline ausblenden',
+ hide_attachments_in_convo: 'Anhänge in Unterhaltungen ausblenden',
+ nsfw_clickthrough: 'Aktiviere ausblendbares Overlay für als NSFW markierte Anhänge',
+ autoload: 'Aktiviere automatisches Laden von Beiträgen beim scrollen',
+ reply_link_preview: 'Aktiviere reply-link Vorschau bei Maus-Hover'
+ },
+ notifications: {
+ notifications: 'Benachrichtigungen',
+ read: 'Gelesen!',
+ followed_you: 'folgt dir'
+ },
+ general: {
+ submit: 'Absenden'
+ }
+}
+
+const fi = {
+ nav: {
+ timeline: 'Aikajana',
+ mentions: 'Maininnat',
+ public_tl: 'Julkinen Aikajana',
+ twkn: 'Koko Tunnettu Verkosto'
+ },
+ user_card: {
+ follows_you: 'Seuraa sinua!',
+ following: 'Seuraat!',
+ follow: 'Seuraa',
+ statuses: 'Viestit',
+ mute: 'Hiljennä',
+ muted: 'Hiljennetty',
+ followers: 'Seuraajat',
+ followees: 'Seuraa',
+ per_day: 'päivässä'
+ },
+ timeline: {
+ show_new: 'Näytä uudet',
+ error_fetching: 'Virhe ladatessa viestejä',
+ up_to_date: 'Ajantasalla',
+ load_older: 'Lataa vanhempia viestejä'
+ },
+ settings: {
+ user_settings: 'Käyttäjän asetukset',
+ name_bio: 'Nimi ja kuvaus',
+ name: 'Nimi',
+ bio: 'Kuvaus',
+ avatar: 'Profiilikuva',
+ current_avatar: 'Nykyinen profiilikuvasi',
+ set_new_avatar: 'Aseta uusi profiilikuva',
+ profile_banner: 'Juliste',
+ current_profile_banner: 'Nykyinen julisteesi',
+ set_new_profile_banner: 'Aseta uusi juliste',
+ profile_background: 'Taustakuva',
+ set_new_profile_background: 'Aseta uusi taustakuva',
+ settings: 'Asetukset',
+ theme: 'Teema',
+ filtering: 'Suodatus',
+ filtering_explanation: 'Kaikki viestit, jotka sisältävät näitä sanoja, suodatetaan. Yksi sana per rivi.',
+ attachments: 'Liitteet',
+ hide_attachments_in_tl: 'Piilota liitteet aikajanalla',
+ hide_attachments_in_convo: 'Piilota liitteet keskusteluissa',
+ nsfw_clickthrough: 'Piilota NSFW liitteet klikkauksen taakse.',
+ autoload: 'Lataa vanhempia viestejä automaattisesti ruudun pohjalla',
+ reply_link_preview: 'Keskusteluiden vastauslinkkien esikatselu'
+ },
+ notifications: {
+ notifications: 'Ilmoitukset',
+ read: 'Lue!',
+ followed_you: 'seuraa sinua'
+ },
+ general: {
+ submit: 'Lähetä'
+ }
+}
+
+const en = {
+ nav: {
+ timeline: 'Timeline',
+ mentions: 'Mentions',
+ public_tl: 'Public Timeline',
+ twkn: 'The Whole Known Network'
+ },
+ user_card: {
+ follows_you: 'Follows you!',
+ following: 'Following!',
+ follow: 'Follow',
+ blocked: 'Blocked!',
+ block: 'Block',
+ statuses: 'Statuses',
+ mute: 'Mute',
+ muted: 'Muted',
+ followers: 'Followers',
+ followees: 'Following',
+ per_day: 'per day'
+ },
+ timeline: {
+ show_new: 'Show new',
+ error_fetching: 'Error fetching updates',
+ up_to_date: 'Up-to-date',
+ load_older: 'Load older statuses'
+ },
+ settings: {
+ user_settings: 'User Settings',
+ name_bio: 'Name & Bio',
+ name: 'Name',
+ bio: 'Bio',
+ avatar: 'Avatar',
+ current_avatar: 'Your current avatar',
+ set_new_avatar: 'Set new avatar',
+ profile_banner: 'Profile Banner',
+ current_profile_banner: 'Your current profile banner',
+ set_new_profile_banner: 'Set new profile banner',
+ profile_background: 'Profile Background',
+ set_new_profile_background: 'Set new profile background',
+ settings: 'Settings',
+ theme: 'Theme',
+ filtering: 'Filtering',
+ filtering_explanation: 'All statuses containing these words will be muted, one per line',
+ attachments: 'Attachments',
+ hide_attachments_in_tl: 'Hide attachments in timeline',
+ hide_attachments_in_convo: 'Hide attachments in conversations',
+ nsfw_clickthrough: 'Enable clickthrough NSFW attachment hiding',
+ autoload: 'Enable automatic loading when scrolled to the bottom',
+ reply_link_preview: 'Enable reply-link preview on mouse hover'
+ },
+ notifications: {
+ notifications: 'Notifications',
+ read: 'Read!',
+ followed_you: 'followed you'
+ },
+ general: {
+ submit: 'Submit'
+ }
+}
+
+const hu = {
+ nav: {
+ timeline: 'Idővonal',
+ mentions: 'Említéseim',
+ public_tl: 'Publikus Idővonal',
+ twkn: 'Az Egész Ismert Hálózat'
+ },
+ user_card: {
+ follows_you: 'Követ téged!',
+ following: 'Követve!',
+ follow: 'Követ',
+ statuses: 'Állapotok',
+ mute: 'Némít',
+ muted: 'Némított',
+ followers: 'Követők',
+ followees: 'Követettek',
+ per_day: 'naponta'
+ },
+ timeline: {
+ show_new: 'Újak mutatása',
+ error_fetching: 'Hiba a frissítések beszerzésénél',
+ up_to_date: 'Naprakész',
+ load_older: 'Régebbi állapotok betöltése'
+ },
+ settings: {
+ user_settings: 'Felhasználói beállítások',
+ name_bio: 'Név és Bio',
+ name: 'Név',
+ bio: 'Bio',
+ avatar: 'Avatár',
+ current_avatar: 'Jelenlegi avatár',
+ set_new_avatar: 'Új avatár',
+ profile_banner: 'Profil Banner',
+ current_profile_banner: 'Jelenlegi profil banner',
+ set_new_profile_banner: 'Új profil banner',
+ profile_background: 'Profil háttérkép',
+ set_new_profile_background: 'Új profil háttér beállítása',
+ settings: 'Beállítások',
+ theme: 'Téma',
+ filtering: 'Szűrés',
+ filtering_explanation: 'Minden tartalom mely ezen szavakat tartalmazza némítva lesz, soronként egy',
+ attachments: 'Csatolmányok',
+ hide_attachments_in_tl: 'Csatolmányok elrejtése az idővonalon',
+ hide_attachments_in_convo: 'Csatolmányok elrejtése a társalgásokban',
+ nsfw_clickthrough: 'NSFW átkattintási tartalom elrejtésének engedélyezése',
+ autoload: 'Autoatikus betöltés engedélyezése lap aljára görgetéskor',
+ reply_link_preview: 'Válasz-link előzetes mutatása egér rátételkor'
+ },
+ notifications: {
+ notifications: 'Értesítések',
+ read: 'Olvasva!',
+ followed_you: 'követ téged'
+ },
+ general: {
+ submit: 'Elküld'
+ }
+}
+
+const ja = {
+ nav: {
+ timeline: 'タイムライン',
+ mentions: '通知',
+ public_tl: '公開タイムライン',
+ twkn: '接続しているすべてのネットワーク'
+ },
+ user_card: {
+ follows_you: 'フォローされました!',
+ following: 'フォロー中!',
+ follow: 'フォロー',
+ statuses: 'ステータス',
+ mute: 'ミュート',
+ muted: 'ミュート済み',
+ followers: 'フォロワー',
+ followees: 'フォロー',
+ per_day: '/日'
+ },
+ timeline: {
+ show_new: '新しいものを表示',
+ error_fetching: '更新の取得中にエラーが発生しました',
+ up_to_date: '最新',
+ load_older: '古いステータスを読み込む'
+ },
+ settings: {
+ user_settings: 'ユーザー設定',
+ name_bio: '名前 & プロフィール',
+ name: '名前',
+ bio: 'プロフィール',
+ avatar: 'アバター',
+ current_avatar: 'あなたの現在のアバター',
+ set_new_avatar: '新しいアバターを設定する',
+ profile_banner: 'プロフィールバナー',
+ current_profile_banner: '現在のプロフィールバナー',
+ set_new_profile_banner: '新しいプロフィールバナーを設定する',
+ profile_background: 'プロフィールの背景',
+ set_new_profile_background: '新しいプロフィールの背景を設定する',
+ settings: '設定',
+ theme: 'テーマ',
+ filtering: 'フィルタリング',
+ filtering_explanation: 'これらの単語を含むすべてのものはミュートされます、1行に1つのワードを入力してください',
+ attachments: '添付ファイル',
+ hide_attachments_in_tl: 'タイムラインの添付ファイルを隠す',
+ hide_attachments_in_convo: '会話の中の添付ファイルを隠す',
+ nsfw_clickthrough: 'NSFWファイルの非表示を有効にする',
+ autoload: '下にスクロールした時に自動で読み込むようにする',
+ reply_link_preview: 'マウスカーソルを重ねたときに返信リンクプレビューを表示するようにする'
+ },
+ notifications: {
+ notifications: '通知',
+ read: '読んだ!',
+ followed_you: 'フォローされました'
+ },
+ general: {
+ submit: '送信'
+ }
+}
+
+const fr = {
+ nav: {
+ timeline: 'Journal',
+ mentions: 'Notifications',
+ public_tl: 'Statuts Locaux',
+ twkn: 'Le Réseau Tout Entier'
+ },
+ user_card: {
+ follows_you: 'Vous Suit!',
+ following: 'Suivis!',
+ follow: 'Suivi',
+ statuses: 'Statuts',
+ mute: 'En Sourdine',
+ muted: 'Mis En Sourdine',
+ followers: 'Vous Suivent',
+ followees: 'Suivis',
+ per_day: 'par jour'
+ },
+ timeline: {
+ show_new: 'Afficher plus',
+ error_fetching: 'Erreur en cherchant des mises à jours',
+ up_to_date: 'A jour',
+ load_older: 'Afficher plus'
+ },
+ settings: {
+ user_settings: 'Paramètres Utilisateur',
+ name_bio: 'Nom & Bio',
+ name: 'Nom',
+ bio: 'Bio',
+ avatar: 'Avatar',
+ current_avatar: 'Votre avatar',
+ set_new_avatar: 'Changer d\'avatar',
+ profile_banner: 'Couverture du Profil',
+ current_profile_banner: 'Couverture du Profil',
+ set_new_profile_banner: 'Nouvelle couverture',
+ profile_background: 'Image de fond',
+ set_new_profile_background: 'Nouvelle image de fond',
+ settings: 'Paramètres',
+ theme: 'Thème',
+ filtering: 'Filtre',
+ filtering_explanation: 'Tout les statuts contenant ces mots vont être mis sous silence, un mot par ligne.',
+ attachments: 'Pièces jointes',
+ hide_attachments_in_tl: 'Cacher les pièces jointes dans le journal',
+ hide_attachments_in_convo: 'Cacher les pièces jointes dans les conversations',
+ nsfw_clickthrough: 'Activer le clic pour afficher les images taggées NSFW',
+ autoload: 'Activer le chargement automatique une fois le bas de la page atteint',
+ reply_link_preview: 'Activer un preview sur passage de la souris'
+ },
+ notifications: {
+ notifications: 'Notfications',
+ read: 'Lu!',
+ followed_you: 'vous a suivi'
+ },
+ general: {
+ submit: 'Envoyer'
+ }
+}
+
+const it = {
+ nav: {
+ timeline: 'Sequenza temporale',
+ mentions: 'Menzioni',
+ public_tl: 'Sequenza temporale pubblica',
+ twkn: 'L\'intiera rete conosciuta'
+ },
+ user_card: {
+ follows_you: 'Ti segue!',
+ following: 'Lo stai seguendo!',
+ follow: 'Segui',
+ statuses: 'Messaggi',
+ mute: 'Ammutolisci',
+ muted: 'Ammutoliti',
+ followers: 'Chi ti segue',
+ followees: 'Chi stai seguendo',
+ per_day: 'al giorno'
+ },
+ timeline: {
+ show_new: 'Mostra nuovi',
+ error_fetching: 'Errori nel prelievo aggiornamenti',
+ up_to_date: 'Aggiornato',
+ load_older: 'Carica messaggi più vecchi'
+ },
+ settings: {
+ user_settings: 'Configurazione dell\'utente',
+ name_bio: 'Nome & Introduzione',
+ name: 'Nome',
+ bio: 'Introduzione',
+ avatar: 'Avatar',
+ current_avatar: 'Il tuo attuale avatar',
+ set_new_avatar: 'Scegli un nuovo avatar',
+ profile_banner: 'Sfondo del tuo profilo',
+ current_profile_banner: 'Sfondo attuale',
+ set_new_profile_banner: 'Scegli un nuovo sfondo per il tuo profilo',
+ profile_background: 'Sfondo della tua pagina',
+ set_new_profile_background: 'Scegli un nuovo sfondo per la tua pagina',
+ settings: 'Settaggi',
+ theme: 'Tema',
+ filtering: 'Filtri',
+ filtering_explanation: 'Filtra via le notifiche che contengono le seguenti parole (inserisci rigo per rigo le parole di innesco)',
+ attachments: 'Allegati',
+ hide_attachments_in_tl: 'Nascondi gli allegati presenti nella sequenza temporale',
+ hide_attachments_in_convo: 'Nascondi gli allegati presenti nelle conversazioni',
+ nsfw_clickthrough: 'Abilita la trasparenza degli allegati NSFW',
+ autoload: 'Abilita caricamento automatico quando si raggiunge il fondo schermo',
+ reply_link_preview: 'Ability il reply-link preview al passaggio del mouse'
+ },
+ notifications: {
+ notifications: 'Notifiche',
+ read: 'Leggi!',
+ followed_you: 'ti ha seguito'
+ },
+ general: {
+ submit: 'Invia'
+ }
+}
+
+const pl = {
+ nav: {
+ timeline: 'Oś czasu',
+ mentions: 'Wzmianki',
+ public_tl: 'Publiczna oś czasu',
+ twkn: 'Cała znana sieć'
+ },
+ user_card: {
+ follows_you: 'Obserwuje cię!',
+ following: 'Obserwowany!',
+ follow: 'Obserwuj',
+ blocked: 'Zablokowany!',
+ block: 'Zablokuj',
+ statuses: 'Statusy',
+ mute: 'Wycisz',
+ muted: 'Wyciszony',
+ followers: 'Obserwujący',
+ followees: 'Obserwowani',
+ per_day: 'dziennie'
+ },
+ timeline: {
+ show_new: 'Pokaż nowe',
+ error_fetching: 'Błąd pobierania',
+ up_to_date: 'Na bieżąco',
+ load_older: 'Załaduj starsze statusy'
+ },
+ settings: {
+ user_settings: 'Ustawienia użytkownika',
+ name_bio: 'Imię i bio',
+ name: 'Imię',
+ bio: 'Bio',
+ avatar: 'Awatar',
+ current_avatar: 'Twój obecny awatar',
+ set_new_avatar: 'Ustaw nowy awatar',
+ profile_banner: 'Banner profilui',
+ current_profile_banner: 'Twój obecny banner profilu',
+ set_new_profile_banner: 'Ustaw nowy banner profilu',
+ profile_background: 'Tło profilu',
+ set_new_profile_background: 'Ustaw nowe tło profilu',
+ settings: 'Ustawienia',
+ theme: 'Motyw',
+ filtering: 'Filtrowanie',
+ filtering_explanation: 'Wszystkie statusy zawierające te słowa będą wyciszone. Jedno słowo na linijkę',
+ attachments: 'Załączniki',
+ hide_attachments_in_tl: 'Ukryj załączniki w osi czasu',
+ hide_attachments_in_convo: 'Ukryj załączniki w rozmowach',
+ nsfw_clickthrough: 'Włącz domyślne ukrywanie załączników o treści nieprzyzwoitej (NSFW)',
+ autoload: 'Włącz automatyczne ładowanie po przewinięciu do końca strony',
+ reply_link_preview: 'Włącz dymek z podglądem postu po najechaniu na znak odpowiedzi'
+ },
+ notifications: {
+ notifications: 'Powiadomienia',
+ read: 'Przeczytane!',
+ followed_you: 'obserwuje cię'
+ },
+ general: {
+ submit: 'Wyślij'
+ }
+}
+
+const messages = {
+ de,
+ fi,
+ en,
+ hu,
+ ja,
+ fr,
+ it,
+ pl
+}
+
+export default messages
diff --git a/src/main.js b/src/main.js
index b994e154..9d2930b6 100644
--- a/src/main.js
+++ b/src/main.js
@@ -19,9 +19,12 @@ import apiModule from './modules/api.js'
import configModule from './modules/config.js'
import VueTimeago from 'vue-timeago'
+import VueI18n from 'vue-i18n'
import createPersistedState from './lib/persisted_state.js'
+import messages from './i18n/messages.js'
+
Vue.use(Vuex)
Vue.use(VueRouter)
Vue.use(VueTimeago, {
@@ -30,6 +33,7 @@ Vue.use(VueTimeago, {
'en-US': require('../static/timeago.json')
}
})
+Vue.use(VueI18n)
const persistedStateOptions = {
paths: [
@@ -79,10 +83,19 @@ const router = new VueRouter({
}
})
+const currentLocale = (window.navigator.language || 'en').split('-')[0]
+
+const i18n = new VueI18n({
+ locale: currentLocale,
+ fallbackLocale: 'en',
+ messages
+})
+
/* eslint-disable no-new */
new Vue({
router,
store,
+ i18n,
el: '#app',
render: h => h(App)
})
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index a1c6b657..5abaea7e 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -26,6 +26,8 @@ const BANNER_UPDATE_URL = '/api/account/update_profile_banner.json'
const PROFILE_UPDATE_URL = '/api/account/update_profile.json'
const EXTERNAL_PROFILE_URL = '/api/externalprofile/show.json'
const QVITTER_USER_TIMELINE_URL = '/api/qvitter/statuses/user_timeline.json'
+const BLOCKING_URL = '/api/blocks/create.json'
+const UNBLOCKING_URL = '/api/blocks/destroy.json'
// const USER_URL = '/api/users/show.json'
import { each, map } from 'lodash'
@@ -184,6 +186,22 @@ const unfollowUser = ({id, credentials}) => {
}).then((data) => data.json())
}
+const blockUser = ({id, credentials}) => {
+ let url = `${BLOCKING_URL}?user_id=${id}`
+ return fetch(url, {
+ headers: authHeaders(credentials),
+ method: 'POST'
+ }).then((data) => data.json())
+}
+
+const unblockUser = ({id, credentials}) => {
+ let url = `${UNBLOCKING_URL}?user_id=${id}`
+ return fetch(url, {
+ headers: authHeaders(credentials),
+ method: 'POST'
+ }).then((data) => data.json())
+}
+
const fetchFriends = ({id, credentials}) => {
let url = `${FRIENDS_URL}?user_id=${id}`
return fetch(url, { headers: authHeaders(credentials) })
@@ -343,6 +361,8 @@ const apiService = {
fetchFollowers,
followUser,
unfollowUser,
+ blockUser,
+ unblockUser,
favorite,
unfavorite,
retweet,
diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js
index a99ea38a..51a46e45 100644
--- a/src/services/backend_interactor_service/backend_interactor_service.js
+++ b/src/services/backend_interactor_service/backend_interactor_service.js
@@ -30,6 +30,14 @@ const backendInteractorService = (credentials) => {
return apiService.unfollowUser({credentials, id})
}
+ const blockUser = (id) => {
+ return apiService.blockUser({credentials, id})
+ }
+
+ const unblockUser = (id) => {
+ return apiService.unblockUser({credentials, id})
+ }
+
const startFetching = ({timeline, store, userId = false}) => {
return timelineFetcherService.startFetching({timeline, store, credentials, userId})
}
@@ -55,6 +63,8 @@ const backendInteractorService = (credentials) => {
fetchFollowers,
followUser,
unfollowUser,
+ blockUser,
+ unblockUser,
fetchAllFollowing,
verifyCredentials: apiService.verifyCredentials,
startFetching,
diff --git a/yarn.lock b/yarn.lock
index 965f6f31..d0d2dde9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5696,6 +5696,10 @@ vue-hot-reload-api@^2.0.1:
version "2.0.9"
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.0.9.tgz#2e8cfbfc8e531eea57d8c1f0bd761047c7e11b56"
+vue-i18n@^7.3.2:
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-7.3.2.tgz#1205bb8811323fd5c44e57e4fd619beaf2f7a9a1"
+
vue-loader@^11.1.0:
version "11.1.0"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-11.1.0.tgz#8f3fcdd8a233ce96b3e99bd3d56e83cc0f2050f2"