123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*
- * Copyright @ 2018-present 8x8, Inc.
- * Copyright @ 2017-2018 Atlassian Pty Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- import WatchConnectivity
- import WatchKit
- import Foundation
-
-
- class InCallController: WKInterfaceController {
- @IBOutlet var mutedButton: WKInterfaceButton!
- @IBOutlet var roomLabel: WKInterfaceLabel!
- @IBOutlet var timer: WKInterfaceTimer!
-
- @IBAction func hangupClicked() {
- sendCommand(JitsiMeetCommands.CMD_HANG_UP, message: nil)
- }
-
- @IBAction func muteClicked() {
- if var micMuted = ExtensionDelegate.currentJitsiMeetContext.micMuted {
- micMuted = !micMuted;
- sendCommand(
- JitsiMeetCommands.CMD_SET_MUTED,
- message: [
- "muted": micMuted ? "true" : "false"
- ])
- updateMutedButton(withMuted: micMuted)
- }
- }
-
- func sendCommand(_ command: JitsiMeetCommands, message: [String : Any]?) {
- if WCSession.isSupported() {
- let session = WCSession.default
- var data = [String: Any]()
-
- if let sessionID = ExtensionDelegate.currentJitsiMeetContext.sessionID {
- if message != nil {
- message!.forEach { data[$0] = $1 }
- }
-
- data["command"] = command.rawValue;
- data["sessionID"] = sessionID;
-
- session.sendMessage(data, replyHandler: nil, errorHandler: nil)
- }
- }
- }
-
- func updateUI(_ newContext: JitsiMeetContext) {
- var conferenceURL = newContext.conferenceURL
-
- if let joinConferenceURL = newContext.joinConferenceURL {
- sendCommand(JitsiMeetCommands.CMD_JOIN_CONFERENCE, message: [ "data" : joinConferenceURL ])
- conferenceURL = joinConferenceURL
- }
-
- let newRoomName = conferenceURL != nil ? conferenceURL!.components(separatedBy: "/").last : ""
-
- roomLabel.setText(newRoomName)
-
- if let newTimestamp = newContext.conferenceTimestamp {
- restartTimer(newTimestamp)
- }
- if let newMuted = newContext.micMuted {
- updateMutedButton(withMuted: newMuted)
- }
- }
-
- func restartTimer(_ conferenceTimestamp: Int64) {
- if (conferenceTimestamp != 0) {
- let newDate = Date(timeIntervalSince1970: TimeInterval(conferenceTimestamp / 1000))
- timer.setDate(newDate)
- timer.start();
- print("WATCH timer set date to: \(newDate) and start")
- } else {
- print("WATCH timer stop")
- timer.stop();
- }
- }
-
- func updateMutedButton(withMuted isMuted: Bool) {
- if isMuted {
- mutedButton.setBackgroundImageNamed("mute-on.png")
- } else {
- mutedButton.setBackgroundImageNamed("mute-off.png")
- }
- }
-
- override func awake(withContext context: Any?) {
- super.awake(withContext: context)
-
- if let data = context as? JitsiMeetContext {
- updateUI(data)
- }
- }
- }
|