Adds an option to export follows

This commit is contained in:
aka 2018-05-13 20:47:08 -03:00
parent 622e8cd94f
commit fae7a40aeb
3 changed files with 40 additions and 1 deletions

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 ]
} }
@ -137,6 +138,34 @@ 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) {
// 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
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', 'friends.csv');
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(this.exportPeople);
},
followListChange () { followListChange () {
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
let formData = new FormData() let formData = new FormData()

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>
</div> </div>
</div> </div>
</template> </template>

View file

@ -288,7 +288,10 @@ const en = {
follow_import: 'Follow import', follow_import: 'Follow import',
import_followers_from_a_csv_file: 'Import follows from a csv file', import_followers_from_a_csv_file: 'Import follows from a csv file',
follows_imported: 'Follows imported! Processing them will take a while.', follows_imported: 'Follows imported! Processing them will take a while.',
follow_import_error: 'Error importing followers' follow_import_error: 'Error importing followers',
follow_export: 'Follow export',
follow_export_processing: 'Processing, you\'ll soon be aked to download your file',
follow_export_button: 'Export your follows to a csv file'
}, },
notifications: { notifications: {
notifications: 'Notifications', notifications: 'Notifications',