Browse Source

Add the projects sidebar

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/2399/head
Joas Schilling 6 years ago
parent
commit
5475685bb0
No known key found for this signature in database GPG Key ID: 7076EA9751AACDDA
  1. 1
      .eslintignore
  2. 63
      src/collectionsintegration.js
  3. 37
      src/components/Sidebar/Sidebar.vue
  4. 55
      src/views/CollaborationView.vue
  5. 1
      webpack.common.js

1
.eslintignore

@ -1,6 +1,5 @@
/js/admin/*
/js/collections.js
/js/collectionsintegration.js
/js/simplewebrtc/bundled.js
/js/tests/*
/js/vendor/*

63
src/collectionsintegration.js

@ -1,63 +0,0 @@
/*
* @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
import Vue from 'vue'
import CollaborationView from './views/CollaborationView'
// eslint-disable-next-line no-unexpected-multiline
(function(OCP, OCA) {
// eslint-disable-next-line
__webpack_nonce__ = btoa(OC.requestToken)
// eslint-disable-next-line
__webpack_public_path__ = OC.linkTo('spreed', 'js/')
Vue.prototype.t = t
Vue.prototype.n = n
Vue.prototype.OC = OC
OCA.Talk = Object.assign({}, OCA.Talk)
OCA.Talk.CollectionsTabView = {
ComponentVM: null,
MountingPoint: null,
init(MountingPoint, roomModel) {
this.ComponentVM = new Vue({
data: {
model: roomModel.toJSON(),
},
render: h => h(CollaborationView),
})
if (MountingPoint) {
this.ComponentVM.$mount(MountingPoint)
}
},
setRoomModel(roomModel) {
if (this.ComponentVM) {
this.ComponentVM.model = roomModel.toJSON()
}
},
}
})(window.OCP, window.OCA)

37
src/components/Sidebar/Sidebar.vue

@ -24,29 +24,41 @@
v-if="opened"
:title="conversation.displayName"
:starred.sync="conversation.isFavorite"
@close="show=false" />
@close="show=false">
<AppSidebarTab :name="t('spreed', 'Participants')" icon="icon-contacts-dark">
Participants
</AppSidebarTab>
<AppSidebarTab :name="t('spreed', 'Projects')" icon="icon-projects">
<CollectionList v-if="conversation.token"
:id="conversation.token"
type="room"
:name="conversation.displayName" />
</AppSidebarTab>
</AppSidebar>
</template>
<script>
import AppSidebar from 'nextcloud-vue/dist/Components/AppSidebar'
import AppSidebarTab from 'nextcloud-vue/dist/Components/AppSidebarTab'
// import ParticipantsTab from './ParticipantsTab/ParticipantsTab'
import { CollectionList } from 'nextcloud-vue-collections'
import { EventBus } from '../../services/EventBus'
export default {
name: 'Sidebar',
components: {
AppSidebar,
AppSidebarTab,
CollectionList,
// ParticipantsTab,
},
data() {
return {
show: true
show: true,
}
},
beforeMount() {
EventBus.$on('routeChange', () => {
this.show = true
})
},
computed: {
opened() {
return !!this.token && this.show
@ -59,10 +71,21 @@ export default {
return this.$store.getters.conversations[this.token]
}
return {
token: '',
displayName: '',
isFavorite: false,
}
},
},
beforeMount() {
EventBus.$on('routeChange', () => {
this.show = true
})
},
}
</script>
<style scoped>
</style>

55
src/views/CollaborationView.vue

@ -1,55 +0,0 @@
<!--
- @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
-
- @author Julius Härtl <jus@bitgrid.net>
-
- @license GNU AGPL version 3 or any later version
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-->
<template>
<div>
<CollectionList v-if="roomId"
:id="roomId"
type="room"
:name="roomTitle" />
</div>
</template>
<script>
import { CollectionList } from 'nextcloud-vue-collections'
export default {
name: 'CollaborationView',
components: {
CollectionList: CollectionList,
},
computed: {
roomId() {
if (this.$root.model && this.$root.model.token) {
return '' + this.$root.model.token
}
return null
},
roomTitle() {
if (this.$root.model && this.$root.model.displayName) {
return '' + this.$root.model.displayName
}
return ''
},
},
}
</script>

1
webpack.common.js

@ -11,7 +11,6 @@ module.exports = {
'admin/stun-server': path.join(__dirname, 'src', 'StunServerSettings.js'),
'admin/turn-server': path.join(__dirname, 'src', 'TurnServerSettings.js'),
'collections': path.join(__dirname, 'src', 'collections.js'),
'collectionsintegration': path.join(__dirname, 'src', 'collectionsintegration.js'),
'talk': path.join(__dirname, 'src', 'main.js')
},
output: {

Loading…
Cancel
Save