Open live streams from Android channel navigation
This commit is contained in:
1 parent
8502d6f2d7
commit
d4ca812578
2 files changed
+14
-3
No files matched your search
@@ -71,7 +71,7 @@ import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.flow.collect
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
enum class Screen { ChannelList, Chat, MemberList, Files, Settings, Logs, VideoRecord, PhotoRecord, Call, Dm }
|
||||
enum class Screen { ChannelList, Chat, MemberList, Files, Settings, Logs, VideoRecord, PhotoRecord, Call, Dm, Streams }
|
||||
|
||||
private var overLock = false
|
||||
private var inputScreen = "setup"
|
||||
@@ -244,7 +244,7 @@ class MainActivity : AppCompatActivity() {
|
||||
inputScreen = screen.name
|
||||
LogManager.addLog("INFO", "MAIN", "UI screen=$screen")
|
||||
val unavailable = when (screen) {
|
||||
Screen.Chat, Screen.MemberList, Screen.Files, Screen.PhotoRecord -> vm.currentChannel.value == null
|
||||
Screen.Chat, Screen.MemberList, Screen.Files, Screen.PhotoRecord, Screen.Streams -> vm.currentChannel.value == null
|
||||
Screen.Dm -> vm.currentDm.value == null
|
||||
Screen.VideoRecord -> videoTarget == null
|
||||
Screen.Call -> callState == null
|
||||
@@ -313,6 +313,7 @@ class MainActivity : AppCompatActivity() {
|
||||
Screen.MemberList -> screen = Screen.Chat
|
||||
Screen.VideoRecord -> screen = if (videoTarget is ConversationTarget.Pm) Screen.Dm else Screen.Chat
|
||||
Screen.PhotoRecord -> screen = Screen.Chat
|
||||
Screen.Streams -> screen = Screen.Chat
|
||||
Screen.Chat -> screen = Screen.ChannelList
|
||||
Screen.Dm -> { vm.closeDm(); screen = Screen.ChannelList }
|
||||
Screen.Call -> screen = screenBeforeCall ?: Screen.ChannelList
|
||||
@@ -393,19 +394,27 @@ class MainActivity : AppCompatActivity() {
|
||||
},
|
||||
onInvite = { showInvite(channel) },
|
||||
onBack = { screen = Screen.ChannelList },
|
||||
onStreams = { screen = Screen.Streams },
|
||||
onPlayVideo = { msg -> videoMessage = msg },
|
||||
onViewPhoto = { msg -> photoMessage = msg },
|
||||
onRecordVideo = {
|
||||
if (com.utun.chat.data.StreamController.blocksCapture()) return@ChatScreen
|
||||
val target = ConversationTarget.Channel(channel.id)
|
||||
videoTargetId = target.nativeId; vm.captureCameraReply(target); screen = Screen.VideoRecord
|
||||
},
|
||||
onCapturePhoto = {
|
||||
if (com.utun.chat.data.StreamController.blocksCapture()) return@ChatScreen
|
||||
photoTargetId = channel.id
|
||||
vm.captureCameraReply(ConversationTarget.Channel(channel.id)); screen = Screen.PhotoRecord
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
Screen.Streams -> {
|
||||
vm.currentChannel.collectAsState().value?.let { channel ->
|
||||
StreamScreen(channel.id, channel.name) { screen = Screen.Chat }
|
||||
}
|
||||
}
|
||||
Screen.MemberList -> {
|
||||
val members by vm.members.collectAsState()
|
||||
val selectedMember by vm.selectedMember.collectAsState()
|
||||
|
||||
@@ -88,7 +88,8 @@ fun ChatScreen(
|
||||
onPlayVideo: (Message) -> Unit = {},
|
||||
onViewPhoto: (Message) -> Unit = {},
|
||||
onRecordVideo: () -> Unit = {},
|
||||
onCapturePhoto: () -> Unit = {}
|
||||
onCapturePhoto: () -> Unit = {},
|
||||
onStreams: () -> Unit = {}
|
||||
) {
|
||||
val listState = rememberLazyListState()
|
||||
val context = LocalContext.current
|
||||
@@ -184,6 +185,7 @@ fun ChatScreen(
|
||||
Box {
|
||||
IconButton(onClick = { menu = true }) { Icon(Icons.Filled.MoreVert, stringResource(R.string.options)) }
|
||||
DropdownMenu(expanded = menu, onDismissRequest = { menu = false }) {
|
||||
DropdownMenuItem(text = { Text(stringResource(R.string.stream_title)) }, onClick = { menu = false; onStreams() })
|
||||
DropdownMenuItem(text = { Text(stringResource(R.string.files_title)) },
|
||||
onClick = { menu = false; onFiles(0) })
|
||||
DropdownMenuItem(text = { Text(stringResource(R.string.files_mine)) },
|
||||
|
||||
Reference in new issue
Block a user