Add ability to delete conversation

Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
This commit is contained in:
Marco Ambrosini 2019-10-08 12:33:16 +02:00
Родитель 08026dbfe1
Коммит 3d267a7d74
5 изменённых файлов: 67 добавлений и 12 удалений

Просмотреть файл

@ -77,10 +77,10 @@ export default {
color: #989898;
}
&-text {
color: #000000;
color: #444444;
}
&--quote {
border-left: 4px solid #0083C9;
border-left: 4px solid rgb(59, 59, 59);
padding: 4px 0 0 8px;
}
}

Просмотреть файл

@ -26,7 +26,7 @@
:key="item.id"
:to="{ name: 'conversation', params: { token: item.token }}"
:title="item.displayName"
@click="joinConversation(item.token)">
@click.prevent.exact="joinConversation(item.token)">
<Avatar
slot="icon"
:size="44"
@ -48,13 +48,9 @@
</ActionButton>
<ActionButton
icon="icon-delete"
@click="alert('Delete')">
Delete
@click.prevent.exact="deleteConversation(item.token)">
{{t('spreed', 'Leave Conversation')}}
</ActionButton>
<ActionLink
icon="icon-external"
title="Link"
href="https://nextcloud.com" />
</template>
</AppContentListItem>
</ul>
@ -67,7 +63,7 @@ import AppNavigationCounter from 'nextcloud-vue/dist/Components/AppNavigationCou
import AppContentListItem from 'nextcloud-vue/dist/Components/AppContentListItem'
import ActionButton from 'nextcloud-vue/dist/Components/ActionButton'
import { fetchConversations } from '../../../services/conversationsService'
import { joinConversation } from '../../../services/participantsService'
import { joinConversation, removeCurrentUserFromConversation } from '../../../services/participantsService'
export default {
name: 'ConversationsList',
@ -102,6 +98,14 @@ export default {
const selectedConversationToken = payload.token
this.joinConversation(selectedConversationToken)
this.$router.push({ path: `/call/${selectedConversationToken}` })
},
/**
* Deletes the current user from the conversation.
* @param {String} token The token of the conversation to be left.
*/
async deleteConversation(token) {
const response = await removeCurrentUserFromConversation(token)
console.debug(response)
}
}
}

Просмотреть файл

@ -99,5 +99,6 @@ export default {
.settings {
position: sticky;
bottom: 0px;
border-top: 1px solid lightgray;
}
</style>

Просмотреть файл

@ -74,4 +74,22 @@ const createGroupConversation = async function(groupId) {
}
}
export { fetchConversations, searchPossibleConversations, createOneToOneConversation, createGroupConversation }
/**
* Delete a conversation.
* @param {String} token The token of the conversation to be deleted.
*/
const deleteConversation = async function(token) {
try {
const response = await axios.delete(generateOcsUrl('apps/spreed/api/v1', 2) + `room/${token}`)
return response
} catch (error) {
console.debug('Error while deleting the conversation: ', error)
}
}
export {
fetchConversations,
searchPossibleConversations,
createOneToOneConversation,
createGroupConversation,
deleteConversation }

Просмотреть файл

@ -38,4 +38,36 @@ const joinConversation = async function(token) {
}
}
export { joinConversation }
/**
* Leaves the conversation specified with the token.
*
* @param {String} token The conversation token;
*/
const leaveConversation = async function(token) {
try {
const response = await axios.delete(generateOcsUrl('apps/spreed/api/v1', 2) + `room/${token}/participants/active`)
return response
} catch (error) {
console.debug(error)
}
}
/**
* Removes the the current user from the conversation specified with the token.
*
* @param {String} token The conversation token;
*/
const removeCurrentUserFromConversation = async function(token) {
try {
const response = await axios.delete(generateOcsUrl('apps/spreed/api/v1', 2) + `room/${token}/participants/self`)
return response
} catch (error) {
console.debug(error)
}
}
export {
joinConversation,
leaveConversation,
removeCurrentUserFromConversation
}