social/src/App.vue

148 wiersze
3.4 KiB
Vue
Czysty Wina Historia

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

<template>
<div class="app-social">
<div id="app-navigation" v-if="!serverData.public">
<app-navigation :menu="menu"></app-navigation>
</div>
<div id="app-content">
<router-view :key="$route.fullPath"></router-view>
</div>
</div>
</template>
<style scoped>
.app-social {
width: 100%;
}
</style>
<script>
import {
PopoverMenu,
AppNavigation,
Multiselect,
Avatar
} from 'nextcloud-vue';
import TimelineEntry from './components/TimelineEntry';
import ProfileInfo from './components/ProfileInfo';
export default {
name: 'App',
components: {
PopoverMenu, AppNavigation, TimelineEntry, Multiselect, Avatar,
ProfileInfo
},
data: function () {
return {
infoHidden: false,
state: [],
};
},
beforeMount: function() {
// importing server data into the store
const serverDataElmt = document.getElementById('serverData');
if (serverDataElmt !== null) {
this.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server));
}
let example = {
message: 'Want to #DropDropbox? #DeleteGoogle? #decentralize? We got you covered, easy as a piece of 🥞\n' +
'\n' +
'Get started right now: https://nextcloud.com/signup',
author: 'Nextcloud 📱☁️💻',
authorId: '@nextcloud@mastodon.xyz',
authorAvatar: OC.linkTo('social', 'img/nextcloud.png'),
timestamp: '1 day ago'
};
let data = [];
for (let i=0; i<3; i++) {
example.id = Math.floor((Math.random() * 100));
data.push(example);
}
data.push({
message: 'Want to #DropDropbox? #DeleteGoogle? #decentralize? We got you covered, easy as a piece of 🥞\n' +
'\n' +
'Get started right now: https://nextcloud.com/signup',
author: 'Admin💻',
authorId: 'admin',
authorAvatar: OC.linkTo('social', 'img/nextcloud.png'),
timestamp: '1 day ago'
})
this.$store.commit('addToTimeline', data);
},
methods: {
hideInfo() {
this.infoHidden = true;
}
},
computed: {
url: function() {
return OC.linkTo('social', 'img/nextcloud.png');
},
currentUser: function() {
return OC.getCurrentUser();
},
socialId: function() {
return '@' + OC.getCurrentUser().uid + '@' + OC.getHost();
},
timeline: function() {
return this.$store.getters.getTimeline;
},
serverData: function() {
return this.$store.getters.getServerData;
},
menu: function () {
let defaultCategories = [
{
id: 'social-timeline',
classes: [],
icon: 'icon-category-monitoring',
text: t('social', 'Timeline'),
router: {
name: 'timeline',
},
},
{
id: 'social-account',
classes: [],
icon: 'icon-user',
text: t('social', 'Your account'),
router: {
name: 'profile',
params: {account: this.currentUser.uid }
},
},
{
id: 'social-friends',
classes: [],
href: '#',
icon: 'icon-category-social',
text: t('social', 'Friends'),
},
{
id: 'social-favorites',
classes: [],
href: '#',
icon: 'icon-favorite',
text: t('social', 'Favorites'),
},
{
id: 'social-direct-messages',
classes: [],
href: '#',
icon: 'icon-comment',
utils: {
counter: 3,
},
text: t('social', 'Direct messages'),
},
];
return {
items: defaultCategories,
loading: false
}
}
}
}
</script>