|
|
|
|
@ -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() |
|
|
|
|
|