@live-change/video-call-frontend 0.8.37 → 0.8.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
package/front/src/App.vue
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
<script setup>
|
|
11
11
|
import 'primevue/resources/themes/saga-green/theme.css'
|
|
12
|
-
import
|
|
12
|
+
import 'boxicons/css/boxicons.min.css'
|
|
13
13
|
|
|
14
14
|
import { useLocale } from '@live-change/vue3-components'
|
|
15
15
|
const locale = useLocale()
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
|
|
27
27
|
<script setup>
|
|
28
28
|
|
|
29
|
-
import { VolumeIndicator } from "@live-change/peer-connection"
|
|
30
|
-
import { UserIdentification } from "@live-change/
|
|
29
|
+
import { VolumeIndicator } from "@live-change/peer-connection-frontend"
|
|
30
|
+
import { UserIdentification } from "@live-change/user-frontend"
|
|
31
31
|
|
|
32
32
|
import { defineProps, defineEmits, toRefs, ref, computed } from 'vue'
|
|
33
33
|
|
package/front/src/room/Room.vue
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<LimitedAccess v-slot="{ authorized }" objectType="videoCall_Room" :object="room" :requiredRoles="requiredRoles">
|
|
3
|
-
<div v-if="
|
|
3
|
+
<div v-if="state === 'welcome'"
|
|
4
|
+
class="surface-card shadow-1 border-round p-3 flex flex-row flex-wrap align-items-center">
|
|
4
5
|
<div class="w-30rem m-1" style="max-width: 80vw">
|
|
5
6
|
<DeviceSelect v-model="selectedDevices" />
|
|
6
7
|
</div>
|
|
@@ -12,6 +13,12 @@
|
|
|
12
13
|
<template v-else>
|
|
13
14
|
<p>JOINED</p>
|
|
14
15
|
</template>
|
|
16
|
+
<!-- <p>selected devices: {{ selectedDevices }}</p>
|
|
17
|
+
<p>local media streams: {{ localMediaStreams }}</p>
|
|
18
|
+
<p>local tracks: {{ localTracks }}</p>-->
|
|
19
|
+
<div class="surface-card shadow-1 border-round mt-3 p-3">
|
|
20
|
+
<pre>{{ JSON.stringify(peer?.summary, null, " ") }}</pre>
|
|
21
|
+
</div>
|
|
15
22
|
</LimitedAccess>
|
|
16
23
|
</template>
|
|
17
24
|
|
|
@@ -19,7 +26,16 @@
|
|
|
19
26
|
import { LimitedAccess } from "@live-change/access-control-frontend"
|
|
20
27
|
import { DeviceSelect } from '@live-change/peer-connection-frontend'
|
|
21
28
|
|
|
22
|
-
import {
|
|
29
|
+
import {
|
|
30
|
+
ref, unref, computed, watch, watchEffect, toRefs,
|
|
31
|
+
onMounted, onUnmounted, defineProps, getCurrentInstance
|
|
32
|
+
} from 'vue'
|
|
33
|
+
import { path, live, actions, api as useApi } from '@live-change/vue3-ssr'
|
|
34
|
+
const api = useApi()
|
|
35
|
+
|
|
36
|
+
const appContext = (typeof window != 'undefined') && getCurrentInstance()?.appContext
|
|
37
|
+
|
|
38
|
+
import { createPeer, mediaStreamsTracks } from "@live-change/peer-connection-frontend"
|
|
23
39
|
|
|
24
40
|
const props = defineProps({
|
|
25
41
|
room: {
|
|
@@ -31,17 +47,59 @@
|
|
|
31
47
|
const { room } = toRefs(props)
|
|
32
48
|
const requiredRoles = ['listener', 'speaker']
|
|
33
49
|
|
|
34
|
-
const
|
|
50
|
+
const state = ref('welcome')
|
|
35
51
|
|
|
36
52
|
const selectedDevices = ref({ })
|
|
53
|
+
const displayMedia = ref()
|
|
37
54
|
|
|
38
55
|
const canJoin = computed(() => !!selectedDevices.value.userMedia)
|
|
39
56
|
|
|
40
57
|
function join() {
|
|
41
58
|
console.log('Joining room', room.value, selectedDevices.value)
|
|
42
|
-
|
|
59
|
+
state.value = 'joining'
|
|
60
|
+
state.value = 'joined'
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const localMediaStreams = computed(() =>
|
|
64
|
+
( selectedDevices.value?.media ? [selectedDevices.value.media] : [])
|
|
65
|
+
.concat(displayMedia.value ? [displayMedia.value] : [])
|
|
66
|
+
)
|
|
67
|
+
const localTracks = mediaStreamsTracks(localMediaStreams)
|
|
68
|
+
watch(() => ([selectedDevices.value.audioMuted, selectedDevices.value.media]), ([muted, media]) => {
|
|
69
|
+
if(!media) return
|
|
70
|
+
for(const track of media.getAudioTracks()) for(const localTrack of localTracks.value)
|
|
71
|
+
if(localTrack.track === track) localTrack.enabled = !muted
|
|
72
|
+
}, { immediate: true })
|
|
73
|
+
watch(() => ([selectedDevices.value.videoMuted, selectedDevices.value.media]), ([muted, media]) => {
|
|
74
|
+
if(!media) return
|
|
75
|
+
for(const track of media.getVideoTracks()) for(const localTrack of localTracks.value)
|
|
76
|
+
if(localTrack.track === track) localTrack.enabled = !muted
|
|
77
|
+
}, { immediate: true })
|
|
78
|
+
|
|
79
|
+
const peer = ref()
|
|
80
|
+
|
|
81
|
+
watchEffect(() => {
|
|
82
|
+
if(!peer.value) return
|
|
83
|
+
peer.value.online = state.value === 'joined'
|
|
84
|
+
}, { immediate: true })
|
|
85
|
+
|
|
86
|
+
let createPeerPromise = null
|
|
87
|
+
async function initPeer() {
|
|
88
|
+
if(createPeerPromise) return createPeerPromise
|
|
89
|
+
createPeerPromise = createPeer({
|
|
90
|
+
channelType: 'videoCall_Room',
|
|
91
|
+
channel: room.value,
|
|
92
|
+
onUnmountedCb: onUnmounted, appContext,
|
|
93
|
+
localTracks,
|
|
94
|
+
})
|
|
95
|
+
peer.value = await createPeerPromise
|
|
96
|
+
createPeerPromise = null
|
|
43
97
|
}
|
|
44
98
|
|
|
99
|
+
onMounted(async () => {
|
|
100
|
+
await initPeer()
|
|
101
|
+
})
|
|
102
|
+
|
|
45
103
|
|
|
46
104
|
</script>
|
|
47
105
|
|
package/index.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
import PeerVideo from './front/src/room/PeerVideo.vue'
|
|
2
|
+
import Room from './front/src/room/Room.vue'
|
|
3
|
+
import VideoWall from './front/src/room/VideoWall.vue'
|
|
4
|
+
|
|
5
|
+
export { PeerVideo, Room, VideoWall }
|
|
6
|
+
|
|
7
|
+
import { videoCallRoutes } from './front/src/router.js'
|
|
8
|
+
export { videoCallRoutes }
|
|
1
9
|
|
|
2
10
|
export { }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@live-change/video-call-frontend",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.38",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"memDev": "node server/start.js memDev --enableSessions --initScript ./init.js --dbAccess",
|
|
6
6
|
"localDevInit": "rm tmp.db; node server/start.js localDev --enableSessions --initScript ./init.js",
|
|
@@ -35,41 +35,41 @@
|
|
|
35
35
|
"@codemirror/language": "6.10.1",
|
|
36
36
|
"@dotenvx/dotenvx": "0.27.0",
|
|
37
37
|
"@fortawesome/fontawesome-free": "^6.5.2",
|
|
38
|
-
"@live-change/access-control-frontend": "^0.8.
|
|
39
|
-
"@live-change/access-control-service": "^0.8.
|
|
40
|
-
"@live-change/backup-service": "^0.8.
|
|
41
|
-
"@live-change/blog-frontend": "^0.8.
|
|
42
|
-
"@live-change/blog-service": "^0.8.
|
|
43
|
-
"@live-change/cli": "^0.8.
|
|
44
|
-
"@live-change/content-frontend": "^0.8.
|
|
45
|
-
"@live-change/content-service": "^0.8.
|
|
46
|
-
"@live-change/dao": "^0.8.
|
|
47
|
-
"@live-change/dao-vue3": "^0.8.
|
|
48
|
-
"@live-change/dao-websocket": "^0.8.
|
|
49
|
-
"@live-change/db-client": "^0.8.
|
|
50
|
-
"@live-change/email-service": "^0.8.
|
|
51
|
-
"@live-change/framework": "^0.8.
|
|
52
|
-
"@live-change/frontend-auto-form": "^0.8.
|
|
53
|
-
"@live-change/frontend-base": "^0.8.
|
|
54
|
-
"@live-change/geoip-service": "^0.8.
|
|
55
|
-
"@live-change/image-frontend": "^0.8.
|
|
56
|
-
"@live-change/locale-settings-service": "^0.8.
|
|
57
|
-
"@live-change/password-authentication-service": "^0.8.
|
|
58
|
-
"@live-change/peer-connection-service": "^0.8.
|
|
59
|
-
"@live-change/prosemirror-service": "^0.8.
|
|
60
|
-
"@live-change/secret-code-service": "^0.8.
|
|
61
|
-
"@live-change/secret-link-service": "^0.8.
|
|
62
|
-
"@live-change/session-service": "^0.8.
|
|
63
|
-
"@live-change/task-service": "^0.8.
|
|
64
|
-
"@live-change/upload-frontend": "^0.8.
|
|
65
|
-
"@live-change/url-frontend": "^0.8.
|
|
66
|
-
"@live-change/url-service": "^0.8.
|
|
67
|
-
"@live-change/user-frontend": "^0.8.
|
|
68
|
-
"@live-change/user-identification-service": "^0.8.
|
|
69
|
-
"@live-change/user-service": "^0.8.
|
|
70
|
-
"@live-change/vote-service": "^0.8.
|
|
71
|
-
"@live-change/vue3-components": "^0.8.
|
|
72
|
-
"@live-change/vue3-ssr": "^0.8.
|
|
38
|
+
"@live-change/access-control-frontend": "^0.8.38",
|
|
39
|
+
"@live-change/access-control-service": "^0.8.38",
|
|
40
|
+
"@live-change/backup-service": "^0.8.38",
|
|
41
|
+
"@live-change/blog-frontend": "^0.8.38",
|
|
42
|
+
"@live-change/blog-service": "^0.8.38",
|
|
43
|
+
"@live-change/cli": "^0.8.38",
|
|
44
|
+
"@live-change/content-frontend": "^0.8.38",
|
|
45
|
+
"@live-change/content-service": "^0.8.38",
|
|
46
|
+
"@live-change/dao": "^0.8.38",
|
|
47
|
+
"@live-change/dao-vue3": "^0.8.38",
|
|
48
|
+
"@live-change/dao-websocket": "^0.8.38",
|
|
49
|
+
"@live-change/db-client": "^0.8.38",
|
|
50
|
+
"@live-change/email-service": "^0.8.38",
|
|
51
|
+
"@live-change/framework": "^0.8.38",
|
|
52
|
+
"@live-change/frontend-auto-form": "^0.8.38",
|
|
53
|
+
"@live-change/frontend-base": "^0.8.38",
|
|
54
|
+
"@live-change/geoip-service": "^0.8.38",
|
|
55
|
+
"@live-change/image-frontend": "^0.8.38",
|
|
56
|
+
"@live-change/locale-settings-service": "^0.8.38",
|
|
57
|
+
"@live-change/password-authentication-service": "^0.8.38",
|
|
58
|
+
"@live-change/peer-connection-service": "^0.8.38",
|
|
59
|
+
"@live-change/prosemirror-service": "^0.8.38",
|
|
60
|
+
"@live-change/secret-code-service": "^0.8.38",
|
|
61
|
+
"@live-change/secret-link-service": "^0.8.38",
|
|
62
|
+
"@live-change/session-service": "^0.8.38",
|
|
63
|
+
"@live-change/task-service": "^0.8.38",
|
|
64
|
+
"@live-change/upload-frontend": "^0.8.38",
|
|
65
|
+
"@live-change/url-frontend": "^0.8.38",
|
|
66
|
+
"@live-change/url-service": "^0.8.38",
|
|
67
|
+
"@live-change/user-frontend": "^0.8.38",
|
|
68
|
+
"@live-change/user-identification-service": "^0.8.38",
|
|
69
|
+
"@live-change/user-service": "^0.8.38",
|
|
70
|
+
"@live-change/vote-service": "^0.8.38",
|
|
71
|
+
"@live-change/vue3-components": "^0.8.38",
|
|
72
|
+
"@live-change/vue3-ssr": "^0.8.38",
|
|
73
73
|
"@vueuse/core": "^10.11.0",
|
|
74
74
|
"boxicons": "^2.1.4",
|
|
75
75
|
"codeceptjs-assert": "^0.0.5",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"vue3-scroll-border": "0.1.6"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
|
-
"@live-change/codeceptjs-helper": "^0.8.
|
|
96
|
+
"@live-change/codeceptjs-helper": "^0.8.38",
|
|
97
97
|
"codeceptjs": "^3.5.12",
|
|
98
98
|
"generate-password": "1.7.1",
|
|
99
99
|
"playwright": "^1.41.2",
|
|
@@ -104,5 +104,5 @@
|
|
|
104
104
|
"author": "Michał Łaszczewski <michal@laszczewski.pl>",
|
|
105
105
|
"license": "ISC",
|
|
106
106
|
"description": "",
|
|
107
|
-
"gitHead": "
|
|
107
|
+
"gitHead": "69b15b8d593c02482e1f36590089a176d72bb4cd"
|
|
108
108
|
}
|
package/server/app.config.js
CHANGED