Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ServerBrowser.vue « Browse « Components « vue « src - github.com/marius-wieschollek/passwords-webextension.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e355676c94cc50349313ab275da1404dd27c2c3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<template>
    <div class="browse-container">
        <parent-folder :folder="folderId" v-on:open="open($event)" v-if="!isHomeFolder"/>
        <folder-list :folders="folders" v-on:open="open($event)"/>
        <password-list :passwords="passwords" :favicons="true" v-on:delete="loadFolders"/>
        <translate tag="div"
                   class="no-results"
                   say="NoServerItems"
                   v-if="passwords.length === 0 && folders.length === 0"/>
    </div>
</template>

<script>
    import Server from '@js/Models/Server/Server';
    import MessageService from '@js/Services/MessageService';
    import PasswordList from '@vue/Components/List/PasswordList';
    import FolderList from '@vue/Components/List/FolderList';
    import Folder from '@vue/Components/List/Item/Folder';
    import ParentFolder from '@vue/Components/List/Item/ParentFolder';
    import Translate from '@vue/Components/Translate';

    export default {
        components: {Translate, ParentFolder, Folder, FolderList, PasswordList},
        props     : {
            server       : {
                type: Server
            },
            folder: {
                type   : String,
                default: null
            }
        },

        data() {
            return {
                folderId : '00000000-0000-0000-0000-000000000000',
                passwords: [],
                folders  : [],
                timer    : null
            };
        },

        async mounted() {
            await this.loadFolders();
            if(this.folder !== null) this.folderId = this.folder;
        },

        destroyed() {
            clearTimeout(this.timer);
        },

        computed: {
            isHomeFolder() {
                return this.folderId === '00000000-0000-0000-0000-000000000000';
            }
        },

        methods: {
            async loadFolders() {
                clearTimeout(this.timer);
                let reply = await MessageService
                    .send({type: 'folder.list', payload: {server: this.server.getId(), folder: this.folderId}});

                let payload = reply.getPayload();
                this.folders = payload.folders;
                this.passwords = payload.passwords;

                this.timer = setTimeout(() => this.loadFolders(), 5000);
            },
            open(folder) {
                this.folderId = folder.getId();
                this.$emit('open', {folder: folder.getId()});
            }
        },

        watch: {
            folderId() {
                this.loadFolders();
            }
        }
    };
</script>

<style lang="scss">
    .browse-container {
        .no-results {
            line-height : 3rem;
            text-align  : center;
        }
    }
</style>