"Fossies" - the Fresh Open Source Software Archive 
Member "jitsi-meet-7675/ios/app/watchos/extension/InterfaceController.swift" (24 Nov 2023, 3884 Bytes) of package /linux/misc/jitsi-meet-7675.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Swift source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
1 /*
2 * Copyright @ 2018-present 8x8, Inc.
3 * Copyright @ 2017-2018 Atlassian Pty Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 import WatchKit
19 import WatchConnectivity
20 import Foundation
21
22
23 class InterfaceController: WKInterfaceController {
24
25 @IBOutlet var infoLabel: WKInterfaceLabel!
26 @IBOutlet var table: WKInterfaceTable!
27
28 override func didAppear(){
29 self.updateUI(ExtensionDelegate.currentJitsiMeetContext)
30 }
31
32 func updateUI(_ newContext:JitsiMeetContext) {
33 if (newContext.recentURLs == nil || newContext.recentURLs!.count == 0) {
34 infoLabel.setText("There are no recent meetings. Please use the app on the phone to start a new call.")
35
36 table.setHidden(true)
37 infoLabel.setHidden(false)
38 } else {
39 updateRecents(withRecents: newContext.recentURLs!, currentContext: newContext)
40
41 table.setHidden(false)
42 infoLabel.setHidden(true)
43 }
44 }
45
46 private func updateRecents(withRecents recents: NSArray, currentContext: JitsiMeetContext) {
47 // Updating the # of rows only if it actually changed prevents from blinking the UI
48 if (table.numberOfRows != recents.count) {
49 table.setNumberOfRows(recents.count, withRowType: "MeetingRowType")
50 }
51
52 for (index, entry) in recents.enumerated() {
53 let entryDict = entry as! NSDictionary
54 let roomURL = entryDict["conference"] as! NSString
55 let timestamp = entryDict["date"] as! NSNumber
56
57 // Prepare values
58 let room = roomURL.components(separatedBy: "/").last
59 let date = Date(timeIntervalSince1970: timestamp.doubleValue / 1000) // timestamp is taken with Date.now() in JS, which uses milliseconds
60 let dateFormatter = DateFormatter()
61 dateFormatter.timeZone = TimeZone.current
62 dateFormatter.locale = NSLocale.current
63 dateFormatter.dateFormat = "HH:mm yyyy-MM-dd"
64 let strDate = dateFormatter.string(from: date)
65
66 // Update row controller
67 let controller = table.rowController(at: index) as! MeetingRowController
68 controller.room = room
69 controller.roomUrl = roomURL as String
70 controller.roomLabel.setText(room)
71 controller.timeLabel.setText(strDate)
72
73 // Change the background for the active meeting
74 if (controller.roomUrl == currentContext.conferenceURL) {
75 controller.rowGroup.setBackgroundColor(UIColor(red: 0.125, green: 0.58, blue: 0.98, alpha: 1))
76 } else {
77 controller.rowGroup.setBackgroundColor(UIColor(red: 0.949, green: 0.956, blue: 1, alpha: 0.14))
78 }
79 }
80 }
81
82 override func contextForSegue(withIdentifier segueIdentifier: String, in table: WKInterfaceTable, rowIndex: Int) -> Any? {
83 let controller = table.rowController(at: rowIndex) as! MeetingRowController
84 let currentContext = ExtensionDelegate.currentJitsiMeetContext
85
86 // Copy the current context and add the joinConferenceURL to trigger the command when the in-call screen is displayed
87 let actionContext = JitsiMeetContext(jmContext: currentContext)
88 actionContext.joinConferenceURL = controller.roomUrl
89
90 print("WATCH contextForSegue: \(actionContext.description)");
91
92 return actionContext;
93 }
94 }