インポート/エクスポート設定を復活

This commit is contained in:
syuilo 2020-10-25 10:48:33 +09:00
parent 749102f9c2
commit 4804bbb211
2 changed files with 9 additions and 29 deletions

View file

@ -9,10 +9,9 @@
<option value="mute">{{ $t('_exportOrImport.muteList') }}</option> <option value="mute">{{ $t('_exportOrImport.muteList') }}</option>
<option value="blocking">{{ $t('_exportOrImport.blockingList') }}</option> <option value="blocking">{{ $t('_exportOrImport.blockingList') }}</option>
</MkSelect> </MkSelect>
<MkButton inline @click="doExport()"><Fa :icon="faDownload"/> {{ $t('export') }}</MkButton> <MkButton inline primary @click="doExport"><Fa :icon="faDownload"/> {{ $t('export') }}</MkButton>
<MkButton inline @click="doImport()" :disabled="!['following', 'user-lists'].includes(exportTarget)"><Fa :icon="faUpload"/> {{ $t('import') }}</MkButton> <MkButton inline primary @click="doImport" :disabled="!['following', 'user-lists'].includes(exportTarget)"><Fa :icon="faUpload"/> {{ $t('import') }}</MkButton>
</div> </div>
<input ref="file" type="file" style="display: none;" @change="onChangeFile"/>
</section> </section>
</template> </template>
@ -21,8 +20,8 @@ import { defineComponent } from 'vue';
import { faDownload, faUpload, faBoxes } from '@fortawesome/free-solid-svg-icons'; import { faDownload, faUpload, faBoxes } from '@fortawesome/free-solid-svg-icons';
import MkButton from '@/components/ui/button.vue'; import MkButton from '@/components/ui/button.vue';
import MkSelect from '@/components/ui/select.vue'; import MkSelect from '@/components/ui/select.vue';
import { apiUrl } from '@/config';
import * as os from '@/os'; import * as os from '@/os';
import { selectFile } from '@/scripts/select-file';
export default defineComponent({ export default defineComponent({
components: { components: {
@ -59,29 +58,9 @@ export default defineComponent({
}); });
}, },
doImport() { async doImport(e) {
(this.$refs.file as any).click(); const file = await selectFile(e.currentTarget || e.target);
},
onChangeFile() {
const [file] = Array.from((this.$refs.file as any).files);
const data = new FormData();
data.append('file', file);
data.append('i', this.$store.state.i.token);
const promise = fetch(apiUrl + '/drive/files/create', {
method: 'POST',
body: data
})
.then(response => response.json())
.then(f => {
this.reqImport(f);
});
os.promiseDialog(promise);
},
reqImport(file) {
os.api( os.api(
this.exportTarget == 'following' ? 'i/import-following' : this.exportTarget == 'following' ? 'i/import-following' :
this.exportTarget == 'user-lists' ? 'i/import-user-lists' : this.exportTarget == 'user-lists' ? 'i/import-user-lists' :
@ -98,7 +77,7 @@ export default defineComponent({
text: e.message text: e.message
}); });
}); });
} },
} }
}); });
</script> </script>

View file

@ -20,6 +20,7 @@
</div> </div>
<div class="menu"> <div class="menu">
<div class="label">{{ $t('otherSettings') }}</div> <div class="label">{{ $t('otherSettings') }}</div>
<MkA class="item" :class="{ active: page === 'import-export' }" replace to="/settings/import-export"><Fa :icon="faBoxes" fixed-width class="icon"/>{{ $t('importAndExport') }}</MkA>
<MkA class="item" :class="{ active: page === 'mute-block' }" replace to="/settings/mute-block"><Fa :icon="faBan" fixed-width class="icon"/>{{ $t('muteAndBlock') }}</MkA> <MkA class="item" :class="{ active: page === 'mute-block' }" replace to="/settings/mute-block"><Fa :icon="faBan" fixed-width class="icon"/>{{ $t('muteAndBlock') }}</MkA>
<MkA class="item" :class="{ active: page === 'word-mute' }" replace to="/settings/word-mute"><Fa :icon="faCommentSlash" fixed-width class="icon"/>{{ $t('wordMute') }}</MkA> <MkA class="item" :class="{ active: page === 'word-mute' }" replace to="/settings/word-mute"><Fa :icon="faCommentSlash" fixed-width class="icon"/>{{ $t('wordMute') }}</MkA>
<MkA class="item" :class="{ active: page === 'api' }" replace to="/settings/api"><Fa :icon="faKey" fixed-width class="icon"/>API</MkA> <MkA class="item" :class="{ active: page === 'api' }" replace to="/settings/api"><Fa :icon="faKey" fixed-width class="icon"/>API</MkA>
@ -39,7 +40,7 @@
<script lang="ts"> <script lang="ts">
import { computed, defineAsyncComponent, defineComponent, onMounted, ref } from 'vue'; import { computed, defineAsyncComponent, defineComponent, onMounted, ref } from 'vue';
import { faCog, faPalette, faPlug, faUser, faListUl, faLock, faCommentSlash, faMusic, faCogs, faEllipsisH, faBan, faShareAlt, faLockOpen, faKey } from '@fortawesome/free-solid-svg-icons'; import { faCog, faPalette, faPlug, faUser, faListUl, faLock, faCommentSlash, faMusic, faCogs, faEllipsisH, faBan, faShareAlt, faLockOpen, faKey, faBoxes } from '@fortawesome/free-solid-svg-icons';
import { faLaugh, faBell } from '@fortawesome/free-regular-svg-icons'; import { faLaugh, faBell } from '@fortawesome/free-regular-svg-icons';
import { store } from '@/store'; import { store } from '@/store';
import { i18n } from '@/i18n'; import { i18n } from '@/i18n';
@ -103,7 +104,7 @@ export default defineComponent({
store.dispatch('logout'); store.dispatch('logout');
location.href = '/'; location.href = '/';
}, },
faPalette, faPlug, faUser, faListUl, faLock, faLaugh, faCommentSlash, faMusic, faBell, faCogs, faEllipsisH, faBan, faShareAlt, faLockOpen, faKey, faPalette, faPlug, faUser, faListUl, faLock, faLaugh, faCommentSlash, faMusic, faBell, faCogs, faEllipsisH, faBan, faShareAlt, faLockOpen, faKey, faBoxes,
}; };
}, },
}); });