| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /*
- * Copyright @ 2017-present 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 UIKit
- import JitsiMeet
-
- class ViewController: UIViewController {
-
- @IBOutlet weak var videoButton: UIButton?
-
- fileprivate var pipViewCoordinator: PiPViewCoordinator?
- fileprivate var jitsiMeetView: JitsiMeetView?
-
- override func viewDidLoad() {
- super.viewDidLoad()
- }
-
- override func viewWillTransition(to size: CGSize,
- with coordinator: UIViewControllerTransitionCoordinator) {
- super.viewWillTransition(to: size, with: coordinator)
-
- let rect = CGRect(origin: CGPoint.zero, size: size)
- pipViewCoordinator?.resetBounds(bounds: rect)
- }
-
- // MARK: - Actions
-
- @IBAction func openJitsiMeet(sender: Any?) {
- cleanUp()
-
- // create and configure jitsimeet view
- let jitsiMeetView = JitsiMeetView()
- jitsiMeetView.welcomePageEnabled = true
- jitsiMeetView.pictureInPictureEnabled = true
- jitsiMeetView.load(nil)
- jitsiMeetView.delegate = self
- self.jitsiMeetView = jitsiMeetView
-
- // Enable jitsimeet view to be a view that can be displayed
- // on top of all the things, and let the coordinator to manage
- // the view state and interactions
- pipViewCoordinator = PiPViewCoordinator(withView: jitsiMeetView)
- pipViewCoordinator?.configureAsStickyView(withParentView: view)
-
- // animate in
- jitsiMeetView.alpha = 0
- pipViewCoordinator?.show()
- }
-
- fileprivate func cleanUp() {
- jitsiMeetView?.removeFromSuperview()
- jitsiMeetView = nil
- pipViewCoordinator = nil
- }
- }
-
- extension ViewController: JitsiMeetViewDelegate {
-
- func conferenceFailed(_ data: [AnyHashable : Any]!) {
- hideJitsiMeetViewAndCleanUp()
- }
-
- func conferenceLeft(_ data: [AnyHashable : Any]!) {
- hideJitsiMeetViewAndCleanUp()
- }
-
- func enterPicture(inPicture data: [AnyHashable : Any]!) {
- DispatchQueue.main.async {
- self.pipViewCoordinator?.enterPictureInPicture()
- }
- }
-
- private func hideJitsiMeetViewAndCleanUp() {
- DispatchQueue.main.async {
- self.pipViewCoordinator?.hide() { _ in
- self.cleanUp()
- }
- }
- }
- }
|