Merge branch 'from/develop/tusooa/backup-ui' into 'develop'

Add ui for backup

See merge request pleroma/pleroma-fe!1520
This commit is contained in:
HJ 2022-06-19 20:31:19 +00:00
commit 5ad7dc7835
4 changed files with 121 additions and 1 deletions

View File

@ -7,11 +7,16 @@ const DataImportExportTab = {
data () { data () {
return { return {
activeTab: 'profile', activeTab: 'profile',
newDomainToMute: '' newDomainToMute: '',
listBackupsError: false,
addBackupError: false,
addedBackup: false,
backups: []
} }
}, },
created () { created () {
this.$store.dispatch('fetchTokens') this.$store.dispatch('fetchTokens')
this.fetchBackups()
}, },
components: { components: {
Importer, Importer,
@ -72,6 +77,28 @@ const DataImportExportTab = {
} }
return user.screen_name return user.screen_name
}).join('\n') }).join('\n')
},
addBackup () {
this.$store.state.api.backendInteractor.addBackup()
.then((res) => {
this.addedBackup = true
this.addBackupError = false
})
.catch((error) => {
this.addedBackup = false
this.addBackupError = error
})
.then(() => this.fetchBackups())
},
fetchBackups () {
this.$store.state.api.backendInteractor.listBackups()
.then((res) => {
this.backups = res
this.listBackupsError = false
})
.catch((error) => {
this.listBackupsError = error.error
})
} }
} }
} }

View File

@ -53,6 +53,67 @@
:export-button-label="$t('settings.mute_export_button')" :export-button-label="$t('settings.mute_export_button')"
/> />
</div> </div>
<div class="setting-item">
<h2>{{ $t('settings.account_backup') }}</h2>
<p>{{ $t('settings.account_backup_description') }}</p>
<table>
<thead>
<tr>
<th>{{ $t('settings.account_backup_table_head') }}</th>
<th />
</tr>
</thead>
<tbody>
<tr
v-for="backup in backups"
:key="backup.id"
>
<td>{{ backup.inserted_at }}</td>
<td class="actions">
<a
v-if="backup.processed"
target="_blank"
:href="backup.url"
>
{{ $t('settings.download_backup') }}
</a>
<span
v-else
>
{{ $t('settings.backup_not_ready') }}
</span>
</td>
</tr>
</tbody>
</table>
<div
v-if="listBackupsError"
class="alert error"
>
{{ $t('settings.list_backups_error', { error }) }}
<button
:title="$t('settings.hide_list_backups_error_action')"
@click="listBackupsError = false"
>
<FAIcon
class="fa-scale-110 fa-old-padding"
icon="times"
/>
</button>
</div>
<button
class="btn button-default"
@click="addBackup"
>
{{ $t('settings.add_backup') }}
</button>
<p v-if="addedBackup">
{{ $t('settings.added_backup') }}
</p>
<template v-if="addBackupError !== false">
<p>{{ $t('settings.add_backup_error', { error: addBackupError }) }}</p>
</template>
</div>
</div> </div>
</template> </template>

View File

@ -317,6 +317,16 @@
"mute_import_error": "Error importing mutes", "mute_import_error": "Error importing mutes",
"mutes_imported": "Mutes imported! Processing them will take a while.", "mutes_imported": "Mutes imported! Processing them will take a while.",
"import_mutes_from_a_csv_file": "Import mutes from a csv file", "import_mutes_from_a_csv_file": "Import mutes from a csv file",
"account_backup": "Account backup",
"account_backup_description": "This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account.",
"account_backup_table_head": "Backup",
"download_backup": "Download",
"backup_not_ready": "This backup is not ready yet.",
"remove_backup": "Remove",
"list_backups_error": "Error fetching backup list: {error}",
"add_backup": "Create a new backup",
"added_backup": "Added a new backup.",
"add_backup_error": "Error adding a new backup: {error}",
"blocks_tab": "Blocks", "blocks_tab": "Blocks",
"bot": "This is a bot account", "bot": "This is a bot account",
"btnRadius": "Buttons", "btnRadius": "Buttons",

View File

@ -87,6 +87,7 @@ const PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`
const PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages` const PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`
const PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read` const PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`
const PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}` const PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`
const PLEROMA_BACKUP_URL = '/api/v1/pleroma/backups'
const oldfetch = window.fetch const oldfetch = window.fetch
@ -875,6 +876,25 @@ const fetchBlocks = ({ credentials }) => {
.then((users) => users.map(parseUser)) .then((users) => users.map(parseUser))
} }
const addBackup = ({ credentials }) => {
return promisedRequest({
url: PLEROMA_BACKUP_URL,
method: 'POST',
credentials
})
}
const listBackups = ({ credentials }) => {
return promisedRequest({
url: PLEROMA_BACKUP_URL,
method: 'GET',
credentials,
params: {
_cacheBooster: (new Date()).getTime()
}
})
}
const fetchOAuthTokens = ({ credentials }) => { const fetchOAuthTokens = ({ credentials }) => {
const url = '/api/oauth_tokens.json' const url = '/api/oauth_tokens.json'
@ -1332,6 +1352,8 @@ const apiService = {
generateMfaBackupCodes, generateMfaBackupCodes,
mfaSetupOTP, mfaSetupOTP,
mfaConfirmOTP, mfaConfirmOTP,
addBackup,
listBackups,
fetchFollowRequests, fetchFollowRequests,
approveUser, approveUser,
denyUser, denyUser,