Merge branch 'develop' into Syldexia/pleroma-fe-feature/account-deletion

This commit is contained in:
Roger Braun 2018-05-20 13:16:49 +02:00
commit 959b2d9d66
5 changed files with 72 additions and 29 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -3,7 +3,7 @@
<div class="panel-heading conversation-heading"> <div class="panel-heading conversation-heading">
{{ $t('timeline.conversation') }} {{ $t('timeline.conversation') }}
<span v-if="collapsable" style="float:right;"> <span v-if="collapsable" style="float:right;">
<small><a href="#" @click.prevent="$emit('toggleExpanded')">Collapse</a></small> <small><a href="#" @click.prevent="$emit('toggleExpanded')">{{ $t('timeline.collapse') }}</a></small>
</span> </span>
</div> </div>
<div class="panel-body"> <div class="panel-body">

View File

@ -8,6 +8,7 @@ const UserSettings = {
followList: null, followList: null,
followImportError: false, followImportError: false,
followsImported: false, followsImported: false,
enableFollowsExport: true,
uploading: [ false, false, false, false ], uploading: [ false, false, false, false ],
previews: [ null, null, null ], previews: [ null, null, null ],
deletingAccount: false, deletingAccount: false,
@ -140,6 +141,37 @@ const UserSettings = {
this.uploading[3] = false this.uploading[3] = false
}) })
}, },
/* This function takes an Array of Users
* and outputs a file with all the addresses for the user to download
*/
exportPeople (users, filename) {
// Get all the friends addresses
var UserAddresses = users.map(function (user) {
// check is it's a local user
if (user && user.is_local) {
// append the instance address
// eslint-disable-next-line no-undef
user.screen_name += '@' + location.hostname
}
return user.screen_name
}).join('\n')
// Make the user download the file
var fileToDownload = document.createElement('a')
fileToDownload.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(UserAddresses))
fileToDownload.setAttribute('download', filename)
fileToDownload.style.display = 'none'
document.body.appendChild(fileToDownload)
fileToDownload.click()
document.body.removeChild(fileToDownload)
},
exportFollows () {
this.enableFollowsExport = false
this.$store.state.api.backendInteractor
.fetchFriends({id: this.$store.state.users.currentUser.id})
.then((friendList) => {
this.exportPeople(friendList, 'friends.csv')
})
},
followListChange () { followListChange () {
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
let formData = new FormData() let formData = new FormData()
@ -156,10 +188,9 @@ const UserSettings = {
deleteAccount () { deleteAccount () {
this.$store.state.api.backendInteractor.deleteAccount({password: this.deleteAccountConfirmPasswordInput}) this.$store.state.api.backendInteractor.deleteAccount({password: this.deleteAccountConfirmPasswordInput})
.then((res) => { .then((res) => {
console.log(res)
if (res.status === 'success') { if (res.status === 'success') {
this.$store.dispatch('logout') this.$store.dispatch('logout')
window.location.href = '/main/all' this.$router.push('/main/all')
} else { } else {
this.deleteAccountError = res.error this.deleteAccountError = res.error
} }

View File

@ -66,6 +66,13 @@
<p>{{$t('settings.follow_import_error')}}</p> <p>{{$t('settings.follow_import_error')}}</p>
</div> </div>
</div> </div>
<div class="setting-item" v-if="enableFollowsExport">
<h3>{{$t('settings.follow_export')}}</h3>
<button class="btn btn-default" @click="exportFollows">{{$t('settings.follow_export_button')}}</button>
</div>
<div class="setting-item" v-else>
<h3>{{$t('settings.follow_export_processing')}}</h3>
</div>
<hr> <hr>
<div class="setting-item"> <div class="setting-item">
<h3>{{$t('settings.delete_account')}}</h3> <h3>{{$t('settings.delete_account')}}</h3>

View File

@ -293,7 +293,10 @@ const en = {
delete_account: 'Delete Account', delete_account: 'Delete Account',
delete_account_description: 'Permanantly delete your account and all your messages.', delete_account_description: 'Permanantly delete your account and all your messages.',
delete_account_instructions: 'Type your password in the input below to confirm account deletion.', delete_account_instructions: 'Type your password in the input below to confirm account deletion.',
delete_account_error: 'There was an issue deleting your account. If this persists please contact your instance administrator.' delete_account_error: 'There was an issue deleting your account. If this persists please contact your instance administrator.',
follow_export: 'Follow export',
follow_export_processing: 'Processing, you\'ll soon be asked to download your file',
follow_export_button: 'Export your follows to a csv file'
}, },
notifications: { notifications: {
notifications: 'Notifications', notifications: 'Notifications',
@ -835,8 +838,8 @@ const fr = {
blocked: 'Bloqué', blocked: 'Bloqué',
block: 'Bloquer', block: 'Bloquer',
statuses: 'Statuts', statuses: 'Statuts',
mute: 'Mettre en muet', mute: 'Masquer',
muted: 'Mis en muet', muted: 'Masqué',
followers: 'Vous suivent', followers: 'Vous suivent',
followees: 'Suivis', followees: 'Suivis',
per_day: 'par jour', per_day: 'par jour',
@ -844,7 +847,7 @@ const fr = {
}, },
timeline: { timeline: {
show_new: 'Afficher plus', show_new: 'Afficher plus',
error_fetching: 'Erreur en cherchant des mises à jours', error_fetching: 'Erreur en cherchant les mises à jour',
up_to_date: 'À jour', up_to_date: 'À jour',
load_older: 'Afficher plus', load_older: 'Afficher plus',
conversation: 'Conversation', conversation: 'Conversation',
@ -855,32 +858,32 @@ const fr = {
user_settings: 'Paramètres utilisateur', user_settings: 'Paramètres utilisateur',
name_bio: 'Nom & Bio', name_bio: 'Nom & Bio',
name: 'Nom', name: 'Nom',
bio: 'Bioraphie', bio: 'Biographie',
avatar: 'Avatar', avatar: 'Avatar',
current_avatar: 'Votre avatar', current_avatar: 'Avatar actuel',
set_new_avatar: 'Changer d\'avatar', set_new_avatar: 'Changer d\'avatar',
profile_banner: 'Bannière du profil', profile_banner: 'Bannière de profil',
current_profile_banner: 'Bannière du profil', current_profile_banner: 'Bannière de profil actuelle',
set_new_profile_banner: 'Changer de bannière', set_new_profile_banner: 'Changer de bannière',
profile_background: 'Image de fond', profile_background: 'Image de fond',
set_new_profile_background: 'Changer d\'image de fond', set_new_profile_background: 'Changer d\'image de fond',
settings: 'Paramètres', settings: 'Paramètres',
theme: 'Thème', theme: 'Thème',
filtering: 'Filtre', filtering: 'Filtre',
filtering_explanation: 'Tout les statuts contenant ces mots vont être cachés, un mot par ligne.', filtering_explanation: 'Tout les statuts contenant ces mots seront masqués. Un mot par ligne.',
attachments: 'Pièces jointes', attachments: 'Pièces jointes',
hide_attachments_in_tl: 'Cacher les pièces jointes dans le journal', hide_attachments_in_tl: 'Masquer les pièces jointes dans le journal',
hide_attachments_in_convo: 'Cacher les pièces jointes dans les conversations', hide_attachments_in_convo: 'Masquer les pièces jointes dans les conversations',
nsfw_clickthrough: 'Activer le clic pour afficher les images marquées comme contenu adulte ou sensible', nsfw_clickthrough: 'Masquer les images marquées comme contenu adulte ou sensible',
autoload: 'Activer le chargement automatique une fois le bas de la page atteint', autoload: 'Charger la suite automatiquement une fois le bas de la page atteint',
reply_link_preview: 'Activer un aperçu d\'une réponse sur passage de la souris', reply_link_preview: 'Afficher un aperçu lors du survol de liens vers une réponse',
presets: 'Thèmes prédéfinis', presets: 'Thèmes prédéfinis',
theme_help: 'Utilisez les codes de couleur hexadécimaux (#aabbcc) pour customiser les couleurs de votre thème.', theme_help: 'Spécifiez des codes couleur hexadécimaux (#aabbcc) pour personnaliser les couleurs du thème',
background: 'Arrière plan', background: 'Arrière plan',
foreground: 'Premier plan', foreground: 'Premier plan',
text: 'Texte', text: 'Texte',
links: 'Liens', links: 'Liens',
streaming: 'Active le défilement automatique de nouveaux statuts lorsqu\'on est au haut de la page', streaming: 'Charger automatiquement les nouveaux statuts lorsque vous êtes au haut de la page',
follow_import: 'Importer ses abonnements', follow_import: 'Importer ses abonnements',
import_followers_from_a_csv_file: 'Importer ses abonnements depuis un fichier csv', import_followers_from_a_csv_file: 'Importer ses abonnements depuis un fichier csv',
follows_imported: 'Abonnements importés ! Le traitement peut prendre un moment.', follows_imported: 'Abonnements importés ! Le traitement peut prendre un moment.',
@ -891,33 +894,34 @@ const fr = {
cGreen: 'Vert (Partager)', cGreen: 'Vert (Partager)',
btnRadius: 'Boutons', btnRadius: 'Boutons',
panelRadius: 'Fenêtres', panelRadius: 'Fenêtres',
inputRadius: 'Champs de texte',
avatarRadius: 'Avatars', avatarRadius: 'Avatars',
avatarAltRadius: 'Avatars (Notifications)', avatarAltRadius: 'Avatars (Notifications)',
tooltipRadius: 'Info-bulles/alertes ', tooltipRadius: 'Info-bulles/alertes ',
attachmentRadius: 'Pièces jointes', attachmentRadius: 'Pièces jointes',
radii_help: 'Mettre en place l\'arondissement des coins de l\'interface (en pixels)', radii_help: 'Vous pouvez ici choisir le niveau d\'arrondi des angles de l\'interface (en pixels)',
stop_gifs: 'Passer la souris sur un GIF pour l\'animer' stop_gifs: 'N\'animer les GIFS que lors du survol du curseur de la souris'
}, },
notifications: { notifications: {
notifications: 'Notifications', notifications: 'Notifications',
read: 'Lu !', read: 'Lu !',
followed_you: 'vous a suivi', followed_you: 'a commencé à vous suivre',
favorited_you: 'a aimé votre statut', favorited_you: 'a aimé votre statut',
repeated_you: 'a partagé votre statut' repeated_you: 'a partagé votre statut'
}, },
login: { login: {
login: 'Connexion', login: 'Connexion',
username: 'Nom d\'utilisateur', username: 'Identifiant',
password: 'Mot de passe', password: 'Mot de passe',
register: 'S\'inscrire', register: 'S\'inscrire',
logout: 'Déconnexion' logout: 'Déconnexion'
}, },
registration: { registration: {
registration: 'Inscription', registration: 'Inscription',
fullname: 'Nom affiché', fullname: 'Pseudonyme',
email: 'Adresse email', email: 'Adresse email',
bio: 'Biographie', bio: 'Biographie',
password_confirm: 'Confirmez le mot de passe' password_confirm: 'Confirmation du mot de passe'
}, },
post_status: { post_status: {
posting: 'Envoi en cours', posting: 'Envoi en cours',
@ -925,7 +929,7 @@ const fr = {
}, },
finder: { finder: {
find_user: 'Chercher un utilisateur', find_user: 'Chercher un utilisateur',
error_fetching_user: 'Une erreur est survenue lors de la recherche de l\'utilisateur' error_fetching_user: 'Erreur lors de la recherche de l\'utilisateur'
}, },
general: { general: {
submit: 'Envoyer', submit: 'Envoyer',
@ -1022,7 +1026,7 @@ const oc = {
timeline: { timeline: {
show_new: 'Ne veire mai', show_new: 'Ne veire mai',
error_fetching: 'Error en cercant de mesas a jorn', error_fetching: 'Error en cercant de mesas a jorn',
up_to_date: 'Actualizat', up_to_date: 'A jorn',
load_older: 'Ne veire mai', load_older: 'Ne veire mai',
conversation: 'Conversacion', conversation: 'Conversacion',
collapse: 'Tampar', collapse: 'Tampar',
@ -1054,6 +1058,7 @@ const oc = {
cRed: 'Roge (Anullar)', cRed: 'Roge (Anullar)',
cOrange: 'Irange (Metre en favorit)', cOrange: 'Irange (Metre en favorit)',
cGreen: 'Verd (Repartajar)', cGreen: 'Verd (Repartajar)',
inputRadius: 'Camps tèxte',
btnRadius: 'Botons', btnRadius: 'Botons',
panelRadius: 'Panèls', panelRadius: 'Panèls',
avatarRadius: 'Avatars', avatarRadius: 'Avatars',
@ -1078,7 +1083,7 @@ const oc = {
notifications: { notifications: {
notifications: 'Notficacions', notifications: 'Notficacions',
read: 'Legit!', read: 'Legit!',
followed_you: 'vos a seguit', followed_you: 'vos sèc',
favorited_you: 'a aimat vòstre estatut', favorited_you: 'a aimat vòstre estatut',
repeated_you: 'a repetit your vòstre estatut' repeated_you: 'a repetit your vòstre estatut'
}, },
@ -1109,7 +1114,7 @@ const oc = {
apply: 'Aplicar' apply: 'Aplicar'
}, },
user_profile: { user_profile: {
timeline_title: 'Flux a lutilizaire' timeline_title: 'Flux utilizaire'
} }
} }