瀏覽代碼

fix(iOS, layout): fix iOS 16 layout

This (partially) reverts commit ddab27e292.

We're reverting this to fix the iOS 16 layout problems caused by the interaction between the app rootViewControoler and JitsiMeetViewController, with the downside that using any RN components based on native view controllers will most likely be faulty. The solution for this would be to change the SDK's entry point to a view controller, instead of JitsiMeetView.
factor2
Alex Bumbu 2 年之前
父節點
當前提交
d77d2f0c5b
沒有連結到貢獻者的電子郵件帳戶。

+ 14
- 38
ios/sdk/sdk.xcodeproj/project.pbxproj 查看文件

35
 		4E0EF63C28CA4069005D1B03 /* JMCallKitProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E0EF63828CA4069005D1B03 /* JMCallKitProxy.m */; };
35
 		4E0EF63C28CA4069005D1B03 /* JMCallKitProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E0EF63828CA4069005D1B03 /* JMCallKitProxy.m */; };
36
 		4E51B76425E5345E0038575A /* ScheenshareEventEmiter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E51B76225E5345E0038575A /* ScheenshareEventEmiter.h */; };
36
 		4E51B76425E5345E0038575A /* ScheenshareEventEmiter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E51B76225E5345E0038575A /* ScheenshareEventEmiter.h */; };
37
 		4E51B76525E5345E0038575A /* ScheenshareEventEmiter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E51B76325E5345E0038575A /* ScheenshareEventEmiter.m */; };
37
 		4E51B76525E5345E0038575A /* ScheenshareEventEmiter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E51B76325E5345E0038575A /* ScheenshareEventEmiter.m */; };
38
-		4EBA6E61286072E300B31882 /* JitsiMeetViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EBA6E5F286072E300B31882 /* JitsiMeetViewController.h */; };
39
-		4EBA6E62286072E300B31882 /* JitsiMeetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EBA6E60286072E300B31882 /* JitsiMeetViewController.m */; };
40
-		4EBA6E652860B1E800B31882 /* JitsiMeetRenderingView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EBA6E632860B1E800B31882 /* JitsiMeetRenderingView.h */; };
41
-		4EBA6E662860B1E800B31882 /* JitsiMeetRenderingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EBA6E642860B1E800B31882 /* JitsiMeetRenderingView.m */; };
38
+		4E812F3328F9A4290087ACC9 /* JitsiMeetView+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E812F3228F9A4290087ACC9 /* JitsiMeetView+Private.h */; };
39
+		4E812F3428F9A4290087ACC9 /* JitsiMeetView+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E812F3228F9A4290087ACC9 /* JitsiMeetView+Private.h */; };
40
+		4E812F3928F9A4ED0087ACC9 /* JitsiMeetView+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E812F3628F9A4ED0087ACC9 /* JitsiMeetView+Private.m */; };
41
+		4E812F3A28F9A4ED0087ACC9 /* JitsiMeetView+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E812F3628F9A4ED0087ACC9 /* JitsiMeetView+Private.m */; };
42
 		4ED4FFF32721B9B90074E620 /* JitsiAudioSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
42
 		4ED4FFF32721B9B90074E620 /* JitsiAudioSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
43
 		4ED4FFF42721B9B90074E620 /* JitsiAudioSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */; };
43
 		4ED4FFF42721B9B90074E620 /* JitsiAudioSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */; };
44
-		4EEC9630286C73A2008705FA /* JitsiMeetView+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EEC962E286C73A2008705FA /* JitsiMeetView+Private.h */; };
45
-		4EEC9631286C73A2008705FA /* JitsiMeetView+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEC962F286C73A2008705FA /* JitsiMeetView+Private.m */; };
46
-		6F08DF7D4458EE3CF3F36F6D /* BuildFile in Frameworks */ = {isa = PBXBuildFile; };
44
+		6F08DF7D4458EE3CF3F36F6D /* (null) in Frameworks */ = {isa = PBXBuildFile; };
47
 		9A8EE79C77C17743BB66E8BD /* libPods-JitsiMeetSDKLite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B46497DE9A95BDF5E312AF48 /* libPods-JitsiMeetSDKLite.a */; };
45
 		9A8EE79C77C17743BB66E8BD /* libPods-JitsiMeetSDKLite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B46497DE9A95BDF5E312AF48 /* libPods-JitsiMeetSDKLite.a */; };
48
 		A4A934E9212F3ADB001E9388 /* Dropbox.m in Sources */ = {isa = PBXBuildFile; fileRef = A4A934E8212F3ADB001E9388 /* Dropbox.m */; };
46
 		A4A934E9212F3ADB001E9388 /* Dropbox.m in Sources */ = {isa = PBXBuildFile; fileRef = A4A934E8212F3ADB001E9388 /* Dropbox.m */; };
49
 		C6245F5D2053091D0040BE68 /* image-resize@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6245F5B2053091D0040BE68 /* image-resize@2x.png */; };
47
 		C6245F5D2053091D0040BE68 /* image-resize@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6245F5B2053091D0040BE68 /* image-resize@2x.png */; };
70
 		DE9A0134289A9A9A00E41CBB /* JitsiMeetSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = DEA9F283258A5D9900D4CD74 /* JitsiMeetSDK.h */; settings = {ATTRIBUTES = (Public, ); }; };
68
 		DE9A0134289A9A9A00E41CBB /* JitsiMeetSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = DEA9F283258A5D9900D4CD74 /* JitsiMeetSDK.h */; settings = {ATTRIBUTES = (Public, ); }; };
71
 		DE9A0135289A9A9A00E41CBB /* ScheenshareEventEmiter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E51B76225E5345E0038575A /* ScheenshareEventEmiter.h */; };
69
 		DE9A0135289A9A9A00E41CBB /* ScheenshareEventEmiter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E51B76225E5345E0038575A /* ScheenshareEventEmiter.h */; };
72
 		DE9A0136289A9A9A00E41CBB /* JitsiMeetBaseLogHandler+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DE65AACB2318028300290BEC /* JitsiMeetBaseLogHandler+Private.h */; };
70
 		DE9A0136289A9A9A00E41CBB /* JitsiMeetBaseLogHandler+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DE65AACB2318028300290BEC /* JitsiMeetBaseLogHandler+Private.h */; };
73
-		DE9A0137289A9A9A00E41CBB /* JitsiMeetRenderingView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EBA6E632860B1E800B31882 /* JitsiMeetRenderingView.h */; };
74
 		DE9A0138289A9A9A00E41CBB /* JitsiMeetViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B412F1B1EDEC80100B1A0A6 /* JitsiMeetViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
71
 		DE9A0138289A9A9A00E41CBB /* JitsiMeetViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B412F1B1EDEC80100B1A0A6 /* JitsiMeetViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
75
 		DE9A0139289A9A9A00E41CBB /* JitsiAudioSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
72
 		DE9A0139289A9A9A00E41CBB /* JitsiAudioSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
76
-		DE9A013A289A9A9A00E41CBB /* JitsiMeetView+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EEC962E286C73A2008705FA /* JitsiMeetView+Private.h */; };
77
 		DE9A013B289A9A9A00E41CBB /* JitsiMeet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BD906E81EC0C00300C8C18E /* JitsiMeet.h */; settings = {ATTRIBUTES = (Public, ); }; };
73
 		DE9A013B289A9A9A00E41CBB /* JitsiMeet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BD906E81EC0C00300C8C18E /* JitsiMeet.h */; settings = {ATTRIBUTES = (Public, ); }; };
78
 		DE9A013C289A9A9A00E41CBB /* JitsiMeetLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = DE81A2D22316AC4D00AE1940 /* JitsiMeetLogger.h */; settings = {ATTRIBUTES = (Public, ); }; };
74
 		DE9A013C289A9A9A00E41CBB /* JitsiMeetLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = DE81A2D22316AC4D00AE1940 /* JitsiMeetLogger.h */; settings = {ATTRIBUTES = (Public, ); }; };
79
 		DE9A013D289A9A9A00E41CBB /* LogUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = DE65AAC92317FFCD00290BEC /* LogUtils.h */; };
75
 		DE9A013D289A9A9A00E41CBB /* LogUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = DE65AAC92317FFCD00290BEC /* LogUtils.h */; };
80
-		DE9A013E289A9A9A00E41CBB /* JitsiMeetViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EBA6E5F286072E300B31882 /* JitsiMeetViewController.h */; };
81
 		DE9A013F289A9A9A00E41CBB /* JitsiMeetConferenceOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = DEAD3224220C497000E93636 /* JitsiMeetConferenceOptions.h */; settings = {ATTRIBUTES = (Public, ); }; };
76
 		DE9A013F289A9A9A00E41CBB /* JitsiMeetConferenceOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = DEAD3224220C497000E93636 /* JitsiMeetConferenceOptions.h */; settings = {ATTRIBUTES = (Public, ); }; };
82
 		DE9A0140289A9A9A00E41CBB /* ExternalAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = C81E9AB825AC5AD800B134D9 /* ExternalAPI.h */; };
77
 		DE9A0140289A9A9A00E41CBB /* ExternalAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = C81E9AB825AC5AD800B134D9 /* ExternalAPI.h */; };
83
 		DE9A0141289A9A9A00E41CBB /* InfoPlistUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C8AFD27D2462C613000293D2 /* InfoPlistUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
78
 		DE9A0141289A9A9A00E41CBB /* InfoPlistUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C8AFD27D2462C613000293D2 /* InfoPlistUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
84
 		DE9A0143289A9A9A00E41CBB /* CallKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BB9AD7A1F5EC8F4001C08DB /* CallKit.m */; };
79
 		DE9A0143289A9A9A00E41CBB /* CallKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BB9AD7A1F5EC8F4001C08DB /* CallKit.m */; };
85
 		DE9A0144289A9A9A00E41CBB /* JitsiMeetBaseLogHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = DE81A2DD2317ED5400AE1940 /* JitsiMeetBaseLogHandler.m */; };
80
 		DE9A0144289A9A9A00E41CBB /* JitsiMeetBaseLogHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = DE81A2DD2317ED5400AE1940 /* JitsiMeetBaseLogHandler.m */; };
86
-		DE9A0145289A9A9A00E41CBB /* JitsiMeetRenderingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EBA6E642860B1E800B31882 /* JitsiMeetRenderingView.m */; };
87
 		DE9A0146289A9A9A00E41CBB /* JitsiAudioSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */; };
81
 		DE9A0146289A9A9A00E41CBB /* JitsiAudioSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */; };
88
 		DE9A0147289A9A9A00E41CBB /* AppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BB9AD7C1F60356D001C08DB /* AppInfo.m */; };
82
 		DE9A0147289A9A9A00E41CBB /* AppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BB9AD7C1F60356D001C08DB /* AppInfo.m */; };
89
 		DE9A0148289A9A9A00E41CBB /* LogBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = DE81A2D72316AC7600AE1940 /* LogBridge.m */; };
83
 		DE9A0148289A9A9A00E41CBB /* LogBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = DE81A2D72316AC7600AE1940 /* LogBridge.m */; };
99
 		DE9A0152289A9A9A00E41CBB /* AudioMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BCA495C1EC4B6C600B793EE /* AudioMode.m */; };
93
 		DE9A0152289A9A9A00E41CBB /* AudioMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BCA495C1EC4B6C600B793EE /* AudioMode.m */; };
100
 		DE9A0153289A9A9A00E41CBB /* Proximity.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BCA495E1EC4B6C600B793EE /* Proximity.m */; };
94
 		DE9A0153289A9A9A00E41CBB /* Proximity.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BCA495E1EC4B6C600B793EE /* Proximity.m */; };
101
 		DE9A0155289A9A9A00E41CBB /* ReactUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = DEFE535521FB2E8300011A3A /* ReactUtils.m */; };
95
 		DE9A0155289A9A9A00E41CBB /* ReactUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = DEFE535521FB2E8300011A3A /* ReactUtils.m */; };
102
-		DE9A0156289A9A9A00E41CBB /* JitsiMeetView+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEC962F286C73A2008705FA /* JitsiMeetView+Private.m */; };
103
 		DE9A0157289A9A9A00E41CBB /* DragGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6A3425E204EF76800E062DD /* DragGestureController.swift */; };
96
 		DE9A0157289A9A9A00E41CBB /* DragGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6A3425E204EF76800E062DD /* DragGestureController.swift */; };
104
 		DE9A0158289A9A9A00E41CBB /* ScheenshareEventEmiter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E51B76325E5345E0038575A /* ScheenshareEventEmiter.m */; };
97
 		DE9A0158289A9A9A00E41CBB /* ScheenshareEventEmiter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E51B76325E5345E0038575A /* ScheenshareEventEmiter.m */; };
105
-		DE9A015A289A9A9A00E41CBB /* JitsiMeetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EBA6E60286072E300B31882 /* JitsiMeetViewController.m */; };
106
 		DE9A015C289A9A9A00E41CBB /* JitsiMeetLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = DE81A2D32316AC4D00AE1940 /* JitsiMeetLogger.m */; };
98
 		DE9A015C289A9A9A00E41CBB /* JitsiMeetLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = DE81A2D32316AC4D00AE1940 /* JitsiMeetLogger.m */; };
107
 		DE9A015E289A9A9A00E41CBB /* JitsiMeetView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B412F171EDEC65D00B1A0A6 /* JitsiMeetView.m */; };
99
 		DE9A015E289A9A9A00E41CBB /* JitsiMeetView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B412F171EDEC65D00B1A0A6 /* JitsiMeetView.m */; };
108
 		DE9A015F289A9A9A00E41CBB /* JitsiMeet.m in Sources */ = {isa = PBXBuildFile; fileRef = DEFE535321FB1BF800011A3A /* JitsiMeet.m */; };
100
 		DE9A015F289A9A9A00E41CBB /* JitsiMeet.m in Sources */ = {isa = PBXBuildFile; fileRef = DEFE535321FB1BF800011A3A /* JitsiMeet.m */; };
148
 		4E0EF63828CA4069005D1B03 /* JMCallKitProxy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JMCallKitProxy.m; sourceTree = "<group>"; };
140
 		4E0EF63828CA4069005D1B03 /* JMCallKitProxy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JMCallKitProxy.m; sourceTree = "<group>"; };
149
 		4E51B76225E5345E0038575A /* ScheenshareEventEmiter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScheenshareEventEmiter.h; sourceTree = "<group>"; };
141
 		4E51B76225E5345E0038575A /* ScheenshareEventEmiter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScheenshareEventEmiter.h; sourceTree = "<group>"; };
150
 		4E51B76325E5345E0038575A /* ScheenshareEventEmiter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScheenshareEventEmiter.m; sourceTree = "<group>"; };
142
 		4E51B76325E5345E0038575A /* ScheenshareEventEmiter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScheenshareEventEmiter.m; sourceTree = "<group>"; };
151
-		4EBA6E5F286072E300B31882 /* JitsiMeetViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JitsiMeetViewController.h; sourceTree = "<group>"; };
152
-		4EBA6E60286072E300B31882 /* JitsiMeetViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JitsiMeetViewController.m; sourceTree = "<group>"; };
153
-		4EBA6E632860B1E800B31882 /* JitsiMeetRenderingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JitsiMeetRenderingView.h; sourceTree = "<group>"; };
154
-		4EBA6E642860B1E800B31882 /* JitsiMeetRenderingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JitsiMeetRenderingView.m; sourceTree = "<group>"; };
143
+		4E812F3228F9A4290087ACC9 /* JitsiMeetView+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JitsiMeetView+Private.h"; sourceTree = "<group>"; };
144
+		4E812F3628F9A4ED0087ACC9 /* JitsiMeetView+Private.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "JitsiMeetView+Private.m"; sourceTree = "<group>"; };
155
 		4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JitsiAudioSession.h; sourceTree = "<group>"; };
145
 		4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JitsiAudioSession.h; sourceTree = "<group>"; };
156
 		4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JitsiAudioSession.m; sourceTree = "<group>"; };
146
 		4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JitsiAudioSession.m; sourceTree = "<group>"; };
157
 		4ED4FFF52721BAE10074E620 /* JitsiAudioSession+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JitsiAudioSession+Private.h"; sourceTree = "<group>"; };
147
 		4ED4FFF52721BAE10074E620 /* JitsiAudioSession+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JitsiAudioSession+Private.h"; sourceTree = "<group>"; };
158
-		4EEC962E286C73A2008705FA /* JitsiMeetView+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JitsiMeetView+Private.h"; sourceTree = "<group>"; };
159
-		4EEC962F286C73A2008705FA /* JitsiMeetView+Private.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "JitsiMeetView+Private.m"; sourceTree = "<group>"; };
160
 		86389F55993FAAF6AEB3FA3E /* Pods-JitsiMeetSDKLite.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDKLite.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDKLite/Pods-JitsiMeetSDKLite.release.xcconfig"; sourceTree = "<group>"; };
148
 		86389F55993FAAF6AEB3FA3E /* Pods-JitsiMeetSDKLite.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDKLite.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDKLite/Pods-JitsiMeetSDKLite.release.xcconfig"; sourceTree = "<group>"; };
161
 		891FE43DAD30BC8976683100 /* Pods-JitsiMeetSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDK.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDK/Pods-JitsiMeetSDK.release.xcconfig"; sourceTree = "<group>"; };
149
 		891FE43DAD30BC8976683100 /* Pods-JitsiMeetSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDK.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDK/Pods-JitsiMeetSDK.release.xcconfig"; sourceTree = "<group>"; };
162
 		8F48C340DE0D91D1012976C5 /* Pods-JitsiMeetSDKLite.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDKLite.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDKLite/Pods-JitsiMeetSDKLite.debug.xcconfig"; sourceTree = "<group>"; };
150
 		8F48C340DE0D91D1012976C5 /* Pods-JitsiMeetSDKLite.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDKLite.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDKLite/Pods-JitsiMeetSDKLite.debug.xcconfig"; sourceTree = "<group>"; };
206
 			files = (
194
 			files = (
207
 				0BB9AD791F5EC6D7001C08DB /* Intents.framework in Frameworks */,
195
 				0BB9AD791F5EC6D7001C08DB /* Intents.framework in Frameworks */,
208
 				0BB9AD771F5EC6CE001C08DB /* CallKit.framework in Frameworks */,
196
 				0BB9AD771F5EC6CE001C08DB /* CallKit.framework in Frameworks */,
209
-				6F08DF7D4458EE3CF3F36F6D /* BuildFile in Frameworks */,
197
+				6F08DF7D4458EE3CF3F36F6D /* (null) in Frameworks */,
210
 				3453F4A32680898C4A40E821 /* libPods-JitsiMeetSDK.a in Frameworks */,
198
 				3453F4A32680898C4A40E821 /* libPods-JitsiMeetSDK.a in Frameworks */,
211
 			);
199
 			);
212
 			runOnlyForDeploymentPostprocessing = 0;
200
 			runOnlyForDeploymentPostprocessing = 0;
281
 				DE81A2DC2317ED5400AE1940 /* JitsiMeetBaseLogHandler.h */,
269
 				DE81A2DC2317ED5400AE1940 /* JitsiMeetBaseLogHandler.h */,
282
 				DE65AACB2318028300290BEC /* JitsiMeetBaseLogHandler+Private.h */,
270
 				DE65AACB2318028300290BEC /* JitsiMeetBaseLogHandler+Private.h */,
283
 				DE81A2DD2317ED5400AE1940 /* JitsiMeetBaseLogHandler.m */,
271
 				DE81A2DD2317ED5400AE1940 /* JitsiMeetBaseLogHandler.m */,
272
+				4E812F3228F9A4290087ACC9 /* JitsiMeetView+Private.h */,
273
+				4E812F3628F9A4ED0087ACC9 /* JitsiMeetView+Private.m */,
284
 				0B412F161EDEC65D00B1A0A6 /* JitsiMeetView.h */,
274
 				0B412F161EDEC65D00B1A0A6 /* JitsiMeetView.h */,
285
-				4EEC962E286C73A2008705FA /* JitsiMeetView+Private.h */,
286
-				4EEC962F286C73A2008705FA /* JitsiMeetView+Private.m */,
287
 				0B412F171EDEC65D00B1A0A6 /* JitsiMeetView.m */,
275
 				0B412F171EDEC65D00B1A0A6 /* JitsiMeetView.m */,
288
-				4EBA6E632860B1E800B31882 /* JitsiMeetRenderingView.h */,
289
-				4EBA6E642860B1E800B31882 /* JitsiMeetRenderingView.m */,
290
-				4EBA6E5F286072E300B31882 /* JitsiMeetViewController.h */,
291
-				4EBA6E60286072E300B31882 /* JitsiMeetViewController.m */,
292
 				DE81A2D72316AC7600AE1940 /* LogBridge.m */,
276
 				DE81A2D72316AC7600AE1940 /* LogBridge.m */,
293
 				DE65AAC92317FFCD00290BEC /* LogUtils.h */,
277
 				DE65AAC92317FFCD00290BEC /* LogUtils.h */,
294
 				DEAFA777229EAD3B0033A7FA /* RNRootView.h */,
278
 				DEAFA777229EAD3B0033A7FA /* RNRootView.h */,
383
 				DEA9F284258A5D9900D4CD74 /* JitsiMeetSDK.h in Headers */,
367
 				DEA9F284258A5D9900D4CD74 /* JitsiMeetSDK.h in Headers */,
384
 				4E51B76425E5345E0038575A /* ScheenshareEventEmiter.h in Headers */,
368
 				4E51B76425E5345E0038575A /* ScheenshareEventEmiter.h in Headers */,
385
 				DE65AACC2318028300290BEC /* JitsiMeetBaseLogHandler+Private.h in Headers */,
369
 				DE65AACC2318028300290BEC /* JitsiMeetBaseLogHandler+Private.h in Headers */,
386
-				4EBA6E652860B1E800B31882 /* JitsiMeetRenderingView.h in Headers */,
387
 				0B412F221EDEF6EA00B1A0A6 /* JitsiMeetViewDelegate.h in Headers */,
370
 				0B412F221EDEF6EA00B1A0A6 /* JitsiMeetViewDelegate.h in Headers */,
388
 				4E0EF63528CA317E005D1B03 /* JMCallKitListener.h in Headers */,
371
 				4E0EF63528CA317E005D1B03 /* JMCallKitListener.h in Headers */,
389
 				4E0EF63028CA2FB3005D1B03 /* JMCallKitEmitter.h in Headers */,
372
 				4E0EF63028CA2FB3005D1B03 /* JMCallKitEmitter.h in Headers */,
390
 				4ED4FFF32721B9B90074E620 /* JitsiAudioSession.h in Headers */,
373
 				4ED4FFF32721B9B90074E620 /* JitsiAudioSession.h in Headers */,
391
 				4E0EF63928CA4069005D1B03 /* JMCallKitProxy.h in Headers */,
374
 				4E0EF63928CA4069005D1B03 /* JMCallKitProxy.h in Headers */,
392
-				4EEC9630286C73A2008705FA /* JitsiMeetView+Private.h in Headers */,
393
 				0BD906EA1EC0C00300C8C18E /* JitsiMeet.h in Headers */,
375
 				0BD906EA1EC0C00300C8C18E /* JitsiMeet.h in Headers */,
394
 				DE81A2D42316AC4D00AE1940 /* JitsiMeetLogger.h in Headers */,
376
 				DE81A2D42316AC4D00AE1940 /* JitsiMeetLogger.h in Headers */,
395
 				DE65AACA2317FFCD00290BEC /* LogUtils.h in Headers */,
377
 				DE65AACA2317FFCD00290BEC /* LogUtils.h in Headers */,
396
-				4EBA6E61286072E300B31882 /* JitsiMeetViewController.h in Headers */,
397
 				DEAD3226220C497000E93636 /* JitsiMeetConferenceOptions.h in Headers */,
378
 				DEAD3226220C497000E93636 /* JitsiMeetConferenceOptions.h in Headers */,
398
 				C81E9AB925AC5AD800B134D9 /* ExternalAPI.h in Headers */,
379
 				C81E9AB925AC5AD800B134D9 /* ExternalAPI.h in Headers */,
399
 				C8AFD27F2462C613000293D2 /* InfoPlistUtil.h in Headers */,
380
 				C8AFD27F2462C613000293D2 /* InfoPlistUtil.h in Headers */,
381
+				4E812F3328F9A4290087ACC9 /* JitsiMeetView+Private.h in Headers */,
400
 			);
382
 			);
401
 			runOnlyForDeploymentPostprocessing = 0;
383
 			runOnlyForDeploymentPostprocessing = 0;
402
 		};
384
 		};
411
 				DE9A0134289A9A9A00E41CBB /* JitsiMeetSDK.h in Headers */,
393
 				DE9A0134289A9A9A00E41CBB /* JitsiMeetSDK.h in Headers */,
412
 				DE9A0135289A9A9A00E41CBB /* ScheenshareEventEmiter.h in Headers */,
394
 				DE9A0135289A9A9A00E41CBB /* ScheenshareEventEmiter.h in Headers */,
413
 				DE9A0136289A9A9A00E41CBB /* JitsiMeetBaseLogHandler+Private.h in Headers */,
395
 				DE9A0136289A9A9A00E41CBB /* JitsiMeetBaseLogHandler+Private.h in Headers */,
414
-				DE9A0137289A9A9A00E41CBB /* JitsiMeetRenderingView.h in Headers */,
415
 				DE9A0138289A9A9A00E41CBB /* JitsiMeetViewDelegate.h in Headers */,
396
 				DE9A0138289A9A9A00E41CBB /* JitsiMeetViewDelegate.h in Headers */,
416
 				4E0EF63628CA317E005D1B03 /* JMCallKitListener.h in Headers */,
397
 				4E0EF63628CA317E005D1B03 /* JMCallKitListener.h in Headers */,
417
 				4E0EF63128CA2FB3005D1B03 /* JMCallKitEmitter.h in Headers */,
398
 				4E0EF63128CA2FB3005D1B03 /* JMCallKitEmitter.h in Headers */,
418
 				DE9A0139289A9A9A00E41CBB /* JitsiAudioSession.h in Headers */,
399
 				DE9A0139289A9A9A00E41CBB /* JitsiAudioSession.h in Headers */,
419
 				4E0EF63A28CA4069005D1B03 /* JMCallKitProxy.h in Headers */,
400
 				4E0EF63A28CA4069005D1B03 /* JMCallKitProxy.h in Headers */,
420
-				DE9A013A289A9A9A00E41CBB /* JitsiMeetView+Private.h in Headers */,
421
 				DE9A013B289A9A9A00E41CBB /* JitsiMeet.h in Headers */,
401
 				DE9A013B289A9A9A00E41CBB /* JitsiMeet.h in Headers */,
422
 				DE9A013C289A9A9A00E41CBB /* JitsiMeetLogger.h in Headers */,
402
 				DE9A013C289A9A9A00E41CBB /* JitsiMeetLogger.h in Headers */,
423
 				DE9A013D289A9A9A00E41CBB /* LogUtils.h in Headers */,
403
 				DE9A013D289A9A9A00E41CBB /* LogUtils.h in Headers */,
424
-				DE9A013E289A9A9A00E41CBB /* JitsiMeetViewController.h in Headers */,
425
 				DE9A013F289A9A9A00E41CBB /* JitsiMeetConferenceOptions.h in Headers */,
404
 				DE9A013F289A9A9A00E41CBB /* JitsiMeetConferenceOptions.h in Headers */,
426
 				DE9A0140289A9A9A00E41CBB /* ExternalAPI.h in Headers */,
405
 				DE9A0140289A9A9A00E41CBB /* ExternalAPI.h in Headers */,
427
 				DE9A0141289A9A9A00E41CBB /* InfoPlistUtil.h in Headers */,
406
 				DE9A0141289A9A9A00E41CBB /* InfoPlistUtil.h in Headers */,
407
+				4E812F3428F9A4290087ACC9 /* JitsiMeetView+Private.h in Headers */,
428
 			);
408
 			);
429
 			runOnlyForDeploymentPostprocessing = 0;
409
 			runOnlyForDeploymentPostprocessing = 0;
430
 		};
410
 		};
686
 				0BB9AD7B1F5EC8F4001C08DB /* CallKit.m in Sources */,
666
 				0BB9AD7B1F5EC8F4001C08DB /* CallKit.m in Sources */,
687
 				DE81A2DF2317ED5400AE1940 /* JitsiMeetBaseLogHandler.m in Sources */,
667
 				DE81A2DF2317ED5400AE1940 /* JitsiMeetBaseLogHandler.m in Sources */,
688
 				4E0EF63B28CA4069005D1B03 /* JMCallKitProxy.m in Sources */,
668
 				4E0EF63B28CA4069005D1B03 /* JMCallKitProxy.m in Sources */,
689
-				4EBA6E662860B1E800B31882 /* JitsiMeetRenderingView.m in Sources */,
690
 				4ED4FFF42721B9B90074E620 /* JitsiAudioSession.m in Sources */,
669
 				4ED4FFF42721B9B90074E620 /* JitsiAudioSession.m in Sources */,
670
+				4E812F3928F9A4ED0087ACC9 /* JitsiMeetView+Private.m in Sources */,
691
 				0BB9AD7D1F60356D001C08DB /* AppInfo.m in Sources */,
671
 				0BB9AD7D1F60356D001C08DB /* AppInfo.m in Sources */,
692
 				DE81A2D92316AC7600AE1940 /* LogBridge.m in Sources */,
672
 				DE81A2D92316AC7600AE1940 /* LogBridge.m in Sources */,
693
 				DEAFA779229EAD520033A7FA /* RNRootView.m in Sources */,
673
 				DEAFA779229EAD520033A7FA /* RNRootView.m in Sources */,
703
 				0BCA49611EC4B6C600B793EE /* Proximity.m in Sources */,
683
 				0BCA49611EC4B6C600B793EE /* Proximity.m in Sources */,
704
 				4E0EF63228CA2FB3005D1B03 /* JMCallKitEmitter.m in Sources */,
684
 				4E0EF63228CA2FB3005D1B03 /* JMCallKitEmitter.m in Sources */,
705
 				DEFE535621FB2E8300011A3A /* ReactUtils.m in Sources */,
685
 				DEFE535621FB2E8300011A3A /* ReactUtils.m in Sources */,
706
-				4EEC9631286C73A2008705FA /* JitsiMeetView+Private.m in Sources */,
707
 				C6A34261204EF76800E062DD /* DragGestureController.swift in Sources */,
686
 				C6A34261204EF76800E062DD /* DragGestureController.swift in Sources */,
708
 				4E51B76525E5345E0038575A /* ScheenshareEventEmiter.m in Sources */,
687
 				4E51B76525E5345E0038575A /* ScheenshareEventEmiter.m in Sources */,
709
 				A4A934E9212F3ADB001E9388 /* Dropbox.m in Sources */,
688
 				A4A934E9212F3ADB001E9388 /* Dropbox.m in Sources */,
710
-				4EBA6E62286072E300B31882 /* JitsiMeetViewController.m in Sources */,
711
 				DE81A2D52316AC4D00AE1940 /* JitsiMeetLogger.m in Sources */,
689
 				DE81A2D52316AC4D00AE1940 /* JitsiMeetLogger.m in Sources */,
712
 				0B412F191EDEC65D00B1A0A6 /* JitsiMeetView.m in Sources */,
690
 				0B412F191EDEC65D00B1A0A6 /* JitsiMeetView.m in Sources */,
713
 				DEFE535421FB1BF800011A3A /* JitsiMeet.m in Sources */,
691
 				DEFE535421FB1BF800011A3A /* JitsiMeet.m in Sources */,
721
 			files = (
699
 			files = (
722
 				DE9A0143289A9A9A00E41CBB /* CallKit.m in Sources */,
700
 				DE9A0143289A9A9A00E41CBB /* CallKit.m in Sources */,
723
 				DE9A0144289A9A9A00E41CBB /* JitsiMeetBaseLogHandler.m in Sources */,
701
 				DE9A0144289A9A9A00E41CBB /* JitsiMeetBaseLogHandler.m in Sources */,
724
-				DE9A0145289A9A9A00E41CBB /* JitsiMeetRenderingView.m in Sources */,
725
 				DE9A0146289A9A9A00E41CBB /* JitsiAudioSession.m in Sources */,
702
 				DE9A0146289A9A9A00E41CBB /* JitsiAudioSession.m in Sources */,
726
 				4E0EF63C28CA4069005D1B03 /* JMCallKitProxy.m in Sources */,
703
 				4E0EF63C28CA4069005D1B03 /* JMCallKitProxy.m in Sources */,
727
 				DE9A0147289A9A9A00E41CBB /* AppInfo.m in Sources */,
704
 				DE9A0147289A9A9A00E41CBB /* AppInfo.m in Sources */,
737
 				DE9A0151289A9A9A00E41CBB /* LocaleDetector.m in Sources */,
714
 				DE9A0151289A9A9A00E41CBB /* LocaleDetector.m in Sources */,
738
 				DE9A0152289A9A9A00E41CBB /* AudioMode.m in Sources */,
715
 				DE9A0152289A9A9A00E41CBB /* AudioMode.m in Sources */,
739
 				DE9A0153289A9A9A00E41CBB /* Proximity.m in Sources */,
716
 				DE9A0153289A9A9A00E41CBB /* Proximity.m in Sources */,
717
+				4E812F3A28F9A4ED0087ACC9 /* JitsiMeetView+Private.m in Sources */,
740
 				DE9A0155289A9A9A00E41CBB /* ReactUtils.m in Sources */,
718
 				DE9A0155289A9A9A00E41CBB /* ReactUtils.m in Sources */,
741
-				DE9A0156289A9A9A00E41CBB /* JitsiMeetView+Private.m in Sources */,
742
 				DE9A0157289A9A9A00E41CBB /* DragGestureController.swift in Sources */,
719
 				DE9A0157289A9A9A00E41CBB /* DragGestureController.swift in Sources */,
743
 				DE9A0158289A9A9A00E41CBB /* ScheenshareEventEmiter.m in Sources */,
720
 				DE9A0158289A9A9A00E41CBB /* ScheenshareEventEmiter.m in Sources */,
744
-				DE9A015A289A9A9A00E41CBB /* JitsiMeetViewController.m in Sources */,
745
 				DE9A015C289A9A9A00E41CBB /* JitsiMeetLogger.m in Sources */,
721
 				DE9A015C289A9A9A00E41CBB /* JitsiMeetLogger.m in Sources */,
746
 				4E0EF63328CA2FB3005D1B03 /* JMCallKitEmitter.m in Sources */,
722
 				4E0EF63328CA2FB3005D1B03 /* JMCallKitEmitter.m in Sources */,
747
 				DE9A015E289A9A9A00E41CBB /* JitsiMeetView.m in Sources */,
723
 				DE9A015E289A9A9A00E41CBB /* JitsiMeetView.m in Sources */,

+ 0
- 30
ios/sdk/src/JitsiMeetRenderingView.h 查看文件

1
-/*
2
- * Copyright @ 2022-present 8x8, Inc.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- *     http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
-#import <UIKit/UIKit.h>
18
-#import "JitsiMeetViewDelegate.h"
19
-
20
-NS_ASSUME_NONNULL_BEGIN
21
-
22
-@interface JitsiMeetRenderingView : UIView
23
-
24
-@property (nonatomic, assign) BOOL isPiPEnabled;
25
-
26
-- (void)setProps:(NSDictionary *_Nonnull)newProps;
27
-
28
-@end
29
-
30
-NS_ASSUME_NONNULL_END

+ 0
- 83
ios/sdk/src/JitsiMeetRenderingView.m 查看文件

1
-/*
2
- * Copyright @ 2022-present 8x8, Inc.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- *     http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-#include <mach/mach_time.h>
17
-
18
-#import "JitsiMeetRenderingView.h"
19
-#import "ReactUtils.h"
20
-#import "RNRootView.h"
21
-#import "JitsiMeet+Private.h"
22
-
23
-/**
24
- * Backwards compatibility: turn the boolean prop into a feature flag.
25
- */
26
-static NSString *const PiPEnabledFeatureFlag = @"pip.enabled";
27
-
28
-@interface JitsiMeetRenderingView ()
29
-@end
30
-
31
-@implementation JitsiMeetRenderingView {
32
-    /**
33
-     * React Native view where the entire content will be rendered.
34
-     */
35
-    RNRootView *rootView;
36
-}
37
-
38
-/**
39
- * Passes the given props to the React Native application. The props which we pass
40
- * are a combination of 3 different sources:
41
- *
42
- * - JitsiMeet.defaultConferenceOptions
43
- * - This function's parameters
44
- * - Some extras which are added by this function
45
- */
46
-- (void)setProps:(NSDictionary *_Nonnull)newProps {
47
-    NSMutableDictionary *props = mergeProps([[JitsiMeet sharedInstance] getDefaultProps], newProps);
48
-
49
-    // Set the PiP flag if it wasn't manually set.
50
-    NSMutableDictionary *featureFlags = props[@"flags"];
51
-    // TODO: temporary implementation
52
-    if (featureFlags[PiPEnabledFeatureFlag] == nil) {
53
-        featureFlags[PiPEnabledFeatureFlag] = @(self.isPiPEnabled);
54
-    }
55
-
56
-    // This method is supposed to be imperative i.e. a second
57
-    // invocation with one and the same URL is expected to join the respective
58
-    // conference again if the first invocation was followed by leaving the
59
-    // conference. However, React and, respectively,
60
-    // appProperties/initialProperties are declarative expressions i.e. one and
61
-    // the same URL will not trigger an automatic re-render in the JavaScript
62
-    // source code. The workaround implemented below introduces imperativeness
63
-    // in React Component props by defining a unique value per invocation.
64
-    props[@"timestamp"] = @(mach_absolute_time());
65
-
66
-    if (rootView) {
67
-        // Update props with the new URL.
68
-        rootView.appProperties = props;
69
-    } else {
70
-        RCTBridge *bridge = [[JitsiMeet sharedInstance] getReactBridge];
71
-        rootView = [[RNRootView alloc] initWithBridge:bridge
72
-                                           moduleName:@"App"
73
-                                    initialProperties:props];
74
-        rootView.backgroundColor = self.backgroundColor;
75
-
76
-        // Add rootView as a subview which completely covers this one.
77
-        [rootView setFrame:[self bounds]];
78
-        rootView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
79
-        [self addSubview:rootView];
80
-    }
81
-}
82
-
83
-@end

+ 114
- 52
ios/sdk/src/JitsiMeetView.m 查看文件

20
 #import "ExternalAPI.h"
20
 #import "ExternalAPI.h"
21
 #import "JitsiMeet+Private.h"
21
 #import "JitsiMeet+Private.h"
22
 #import "JitsiMeetConferenceOptions+Private.h"
22
 #import "JitsiMeetConferenceOptions+Private.h"
23
-#import "JitsiMeetView.h"
24
-#import "JitsiMeetViewController.h"
23
+#import "JitsiMeetView+Private.h"
25
 #import "ReactUtils.h"
24
 #import "ReactUtils.h"
26
 #import "RNRootView.h"
25
 #import "RNRootView.h"
27
 
26
 
28
-@interface JitsiMeetView ()
29
 
27
 
30
-@property (nonatomic, strong) JitsiMeetViewController *jitsiMeetViewController;
31
-@property (nonatomic, strong) UINavigationController *navController;
32
-@property (nonatomic, readonly) BOOL isPiPEnabled;
33
-
34
-@end
28
+/**
29
+ * Backwards compatibility: turn the boolean prop into a feature flag.
30
+ */
31
+static NSString *const PiPEnabledFeatureFlag = @"pip.enabled";
35
 
32
 
36
-@implementation JitsiMeetView
37
 
33
 
38
-@dynamic isPiPEnabled;
34
+@implementation JitsiMeetView {
35
+    /**
36
+     * React Native view where the entire content will be rendered.
37
+     */
38
+    RNRootView *rootView;
39
+}
39
 
40
 
40
 #pragma mark Initializers
41
 #pragma mark Initializers
41
 
42
 
66
     return self;
67
     return self;
67
 }
68
 }
68
 
69
 
69
-- (void)dealloc {
70
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
71
-}
72
-
73
 /**
70
 /**
74
  * Internal initialization:
71
  * Internal initialization:
75
  *
72
  *
77
  * - initializes the external API scope
74
  * - initializes the external API scope
78
  */
75
  */
79
 - (void)initWithXXX {
76
 - (void)initWithXXX {
80
-    self.jitsiMeetViewController = [[JitsiMeetViewController alloc] init];
81
-    self.jitsiMeetViewController.view.frame = [self bounds];
82
-    [self addSubview:self.jitsiMeetViewController.view];
77
+    // Set a background color which is in accord with the JavaScript and Android
78
+    // parts of the application and causes less perceived visual flicker than
79
+    // the default background color.
80
+    self.backgroundColor
81
+        = [UIColor colorWithRed:.07f green:.07f blue:.07f alpha:1];
83
     
82
     
84
     [self registerObservers];
83
     [self registerObservers];
85
 }
84
 }
86
 
85
 
86
+- (void)dealloc {
87
+    [[NSNotificationCenter defaultCenter] removeObserver:self];
88
+}
89
+
87
 #pragma mark API
90
 #pragma mark API
88
 
91
 
89
 - (void)join:(JitsiMeetConferenceOptions *)options {
92
 - (void)join:(JitsiMeetConferenceOptions *)options {
90
-    [self.jitsiMeetViewController join:options withPiP:self.isPiPEnabled];
93
+    [self setProps:options == nil ? @{} : [options asProps]];
91
 }
94
 }
92
 
95
 
93
 - (void)leave {
96
 - (void)leave {
94
-    [self.jitsiMeetViewController leave];
97
+    [self setProps:@{}];
95
 }
98
 }
96
 
99
 
97
 - (void)hangUp {
100
 - (void)hangUp {
98
-    [self.jitsiMeetViewController hangUp];
101
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
102
+    [externalAPI sendHangUp];
99
 }
103
 }
100
 
104
 
101
 - (void)setAudioMuted:(BOOL)muted {
105
 - (void)setAudioMuted:(BOOL)muted {
102
-    [self.jitsiMeetViewController setAudioMuted:muted];
106
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
107
+    [externalAPI sendSetAudioMuted:muted];
103
 }
108
 }
104
 
109
 
105
 - (void)sendEndpointTextMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to {
110
 - (void)sendEndpointTextMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to {
106
-    [self.jitsiMeetViewController sendEndpointTextMessage:message :to];
111
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
112
+    [externalAPI sendEndpointTextMessage:message :to];
107
 }
113
 }
108
 
114
 
109
 - (void)toggleScreenShare:(BOOL)enabled {
115
 - (void)toggleScreenShare:(BOOL)enabled {
110
-    [self.jitsiMeetViewController toggleScreenShare:enabled];
116
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
117
+    [externalAPI toggleScreenShare:enabled];
111
 }
118
 }
112
 
119
 
113
 - (void)retrieveParticipantsInfo:(void (^ _Nonnull)(NSArray * _Nullable))completionHandler {
120
 - (void)retrieveParticipantsInfo:(void (^ _Nonnull)(NSArray * _Nullable))completionHandler {
114
-    [self.jitsiMeetViewController retrieveParticipantsInfo:completionHandler];
121
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
122
+    [externalAPI retrieveParticipantsInfo:completionHandler];
115
 }
123
 }
116
 
124
 
117
 - (void)openChat:(NSString*)to  {
125
 - (void)openChat:(NSString*)to  {
118
-    [self.jitsiMeetViewController openChat:to];
126
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
127
+    [externalAPI openChat:to];
119
 }
128
 }
120
 
129
 
121
 - (void)closeChat  {
130
 - (void)closeChat  {
122
-    [self.jitsiMeetViewController closeChat];
131
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
132
+    [externalAPI closeChat];
123
 }
133
 }
124
 
134
 
125
 - (void)sendChatMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to {
135
 - (void)sendChatMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to {
126
-    [self.jitsiMeetViewController sendChatMessage:message :to];
136
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
137
+    [externalAPI sendChatMessage:message :to];
127
 }
138
 }
128
 
139
 
129
 - (void)setVideoMuted:(BOOL)muted {
140
 - (void)setVideoMuted:(BOOL)muted {
130
-    [self.jitsiMeetViewController setVideoMuted:muted];
141
+    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
142
+    [externalAPI sendSetVideoMuted:muted];
131
 }
143
 }
132
 
144
 
133
 - (void)setClosedCaptionsEnabled:(BOOL)enabled {
145
 - (void)setClosedCaptionsEnabled:(BOOL)enabled {
135
     [externalAPI sendSetClosedCaptionsEnabled:enabled];
147
     [externalAPI sendSetClosedCaptionsEnabled:enabled];
136
 }
148
 }
137
 
149
 
138
-#pragma mark Private
139
-
140
-- (BOOL)isPiPEnabled {
141
-    return self.delegate && [self.delegate respondsToSelector:@selector(enterPictureInPicture:)];
142
-}
150
+#pragma mark Private methods
143
 
151
 
144
 - (void)registerObservers {
152
 - (void)registerObservers {
153
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleUpdateViewPropsNotification:) name:updateViewPropsNotificationName object:nil];
145
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleSendEventNotification:) name:sendEventNotificationName object:nil];
154
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleSendEventNotification:) name:sendEventNotificationName object:nil];
155
+ }
156
+
157
+- (void)handleUpdateViewPropsNotification:(NSNotification *)notification {
158
+    NSDictionary *props = [notification.userInfo objectForKey:@"props"];
159
+    [self setProps:props];
146
 }
160
 }
147
 
161
 
148
 - (void)handleSendEventNotification:(NSNotification *)notification {
162
 - (void)handleSendEventNotification:(NSNotification *)notification {
149
     NSString *eventName = notification.userInfo[@"name"];
163
     NSString *eventName = notification.userInfo[@"name"];
150
     NSString *eventData = notification.userInfo[@"data"];
164
     NSString *eventData = notification.userInfo[@"data"];
151
-    
152
-    SEL sel = NSSelectorFromString([self methodNameFromEventName:eventName]);
153
 
165
 
166
+    SEL sel = NSSelectorFromString([self methodNameFromEventName:eventName]);
154
     if (sel && [self.delegate respondsToSelector:sel]) {
167
     if (sel && [self.delegate respondsToSelector:sel]) {
155
         [self.delegate performSelector:sel withObject:eventData];
168
         [self.delegate performSelector:sel withObject:eventData];
156
     }
169
     }
157
 }
170
 }
158
 
171
 
159
 /**
172
 /**
160
- * Converts a specific event name i.e. redux action type description to a
161
- * method name.
173
+  * Converts a specific event name i.e. redux action type description to a
174
+  * method name.
175
+  *
176
+  * @param eventName The event name to convert to a method name.
177
+  * @return A method name constructed from the specified `eventName`.
178
+  */
179
+ - (NSString *)methodNameFromEventName:(NSString *)eventName {
180
+    NSMutableString *methodName
181
+        = [NSMutableString stringWithCapacity:eventName.length];
182
+
183
+    for (NSString *c in [eventName componentsSeparatedByString:@"_"]) {
184
+        if (c.length) {
185
+            [methodName appendString:
186
+                methodName.length ? c.capitalizedString : c.lowercaseString];
187
+        }
188
+    }
189
+    [methodName appendString:@":"];
190
+
191
+    return methodName;
192
+ }
193
+
194
+/**
195
+ * Passes the given props to the React Native application. The props which we pass
196
+ * are a combination of 3 different sources:
162
  *
197
  *
163
- * @param eventName The event name to convert to a method name.
164
- * @return A method name constructed from the specified `eventName`.
198
+ * - JitsiMeet.defaultConferenceOptions
199
+ * - This function's parameters
200
+ * - Some extras which are added by this function
165
  */
201
  */
166
-- (NSString *)methodNameFromEventName:(NSString *)eventName {
167
-   NSMutableString *methodName
168
-       = [NSMutableString stringWithCapacity:eventName.length];
169
-
170
-   for (NSString *c in [eventName componentsSeparatedByString:@"_"]) {
171
-       if (c.length) {
172
-           [methodName appendString:
173
-               methodName.length ? c.capitalizedString : c.lowercaseString];
174
-       }
175
-   }
176
-   [methodName appendString:@":"];
177
-
178
-   return methodName;
202
+- (void)setProps:(NSDictionary *_Nonnull)newProps {
203
+    NSMutableDictionary *props = mergeProps([[JitsiMeet sharedInstance] getDefaultProps], newProps);
204
+
205
+    // Set the PiP flag if it wasn't manually set.
206
+    NSMutableDictionary *featureFlags = props[@"flags"];
207
+    if (featureFlags[PiPEnabledFeatureFlag] == nil) {
208
+        featureFlags[PiPEnabledFeatureFlag]
209
+            = [NSNumber numberWithBool:
210
+               self.delegate && [self.delegate respondsToSelector:@selector(enterPictureInPicture:)]];
211
+    }
212
+
213
+    // This method is supposed to be imperative i.e. a second
214
+    // invocation with one and the same URL is expected to join the respective
215
+    // conference again if the first invocation was followed by leaving the
216
+    // conference. However, React and, respectively,
217
+    // appProperties/initialProperties are declarative expressions i.e. one and
218
+    // the same URL will not trigger an automatic re-render in the JavaScript
219
+    // source code. The workaround implemented below introduces imperativeness
220
+    // in React Component props by defining a unique value per invocation.
221
+    props[@"timestamp"] = @(mach_absolute_time());
222
+
223
+    if (rootView) {
224
+        // Update props with the new URL.
225
+        rootView.appProperties = props;
226
+    } else {
227
+        RCTBridge *bridge = [[JitsiMeet sharedInstance] getReactBridge];
228
+        rootView
229
+            = [[RNRootView alloc] initWithBridge:bridge
230
+                                      moduleName:@"App"
231
+                               initialProperties:props];
232
+        rootView.backgroundColor = self.backgroundColor;
233
+
234
+        // Add rootView as a subview which completely covers this one.
235
+        [rootView setFrame:[self bounds]];
236
+        rootView.autoresizingMask
237
+            = UIViewAutoresizingFlexibleWidth
238
+                | UIViewAutoresizingFlexibleHeight;
239
+        [self addSubview:rootView];
240
+    }
179
 }
241
 }
180
 
242
 
181
 @end
243
 @end

+ 0
- 38
ios/sdk/src/JitsiMeetViewController.h 查看文件

1
-/*
2
- * Copyright @ 2022-present 8x8, Inc.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- *     http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
-#import <UIKit/UIKit.h>
18
-#import "JitsiMeetConferenceOptions.h"
19
-
20
-NS_ASSUME_NONNULL_BEGIN
21
-
22
-@interface JitsiMeetViewController : UIViewController
23
-
24
-- (void)join:(JitsiMeetConferenceOptions *)options withPiP:(BOOL)enablePiP;
25
-- (void)leave;
26
-- (void)hangUp;
27
-- (void)setAudioMuted:(BOOL)muted;
28
-- (void)sendEndpointTextMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to;
29
-- (void)toggleScreenShare:(BOOL)enabled;
30
-- (void)retrieveParticipantsInfo:(void (^ _Nonnull)(NSArray * _Nullable))completionHandler;
31
-- (void)openChat:(NSString*)to;
32
-- (void)closeChat;
33
-- (void)sendChatMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to;
34
-- (void)setVideoMuted:(BOOL)muted;
35
-
36
-@end
37
-
38
-NS_ASSUME_NONNULL_END

+ 0
- 127
ios/sdk/src/JitsiMeetViewController.m 查看文件

1
-/*
2
- * Copyright @ 2022-present 8x8, Inc.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- *     http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
-#import "JitsiMeetViewController.h"
18
-#import "JitsiMeet+Private.h"
19
-#import "JitsiMeetConferenceOptions+Private.h"
20
-#import "JitsiMeetRenderingView.h"
21
-#import "JitsiMeetView+Private.h"
22
-
23
-@interface JitsiMeetViewController ()
24
-
25
-@property (strong, nonatomic) JitsiMeetRenderingView *view;
26
-
27
-@end
28
-
29
-@implementation JitsiMeetViewController
30
-
31
-@dynamic view;
32
-
33
-- (instancetype)init {
34
-    self = [super init];
35
-    if (self) {
36
-        [self registerObservers];
37
-    }
38
-    
39
-    return self;
40
-}
41
-
42
-- (void)dealloc {
43
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
44
-}
45
-
46
-- (void)loadView {
47
-    [super loadView];
48
-    
49
-    self.view = [[JitsiMeetRenderingView alloc] init];
50
-    self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
51
-}
52
-
53
-- (void)viewDidLoad {
54
-    [super viewDidLoad];
55
-
56
-    // Set a background color which is in accord with the JavaScript and Android
57
-    // parts of the application and causes less perceived visual flicker than
58
-    // the default background color.
59
-    self.view.backgroundColor = [UIColor colorWithRed:.07f green:.07f blue:.07f alpha:1];
60
-}
61
-
62
-- (void)join:(JitsiMeetConferenceOptions *)options withPiP:(BOOL)enablePiP {
63
-    self.view.isPiPEnabled = enablePiP;
64
-    [self.view setProps:options == nil ? @{} : [options asProps]];
65
-}
66
-
67
-- (void)leave {
68
-    [self.view setProps:@{}];
69
-}
70
-
71
-- (void)hangUp {
72
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
73
-    [externalAPI sendHangUp];
74
-}
75
-
76
-- (void)setAudioMuted:(BOOL)muted {
77
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
78
-    [externalAPI sendSetAudioMuted:muted];
79
-}
80
-
81
-- (void)sendEndpointTextMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to {
82
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
83
-    [externalAPI sendEndpointTextMessage:message :to];
84
-}
85
-
86
-- (void)toggleScreenShare:(BOOL)enabled {
87
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
88
-    [externalAPI toggleScreenShare:enabled];
89
-}
90
-
91
-- (void)retrieveParticipantsInfo:(void (^ _Nonnull)(NSArray * _Nullable))completionHandler {
92
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
93
-    [externalAPI retrieveParticipantsInfo:completionHandler];
94
-}
95
-
96
-- (void)openChat:(NSString*)to  {
97
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
98
-    [externalAPI openChat:to];
99
-}
100
-
101
-- (void)closeChat  {
102
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
103
-    [externalAPI closeChat];
104
-}
105
-
106
-- (void)sendChatMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to {
107
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
108
-    [externalAPI sendChatMessage:message :to];
109
-}
110
-
111
-- (void)setVideoMuted:(BOOL)muted {
112
-    ExternalAPI *externalAPI = [[JitsiMeet sharedInstance] getExternalAPI];
113
-    [externalAPI sendSetVideoMuted:muted];
114
-}
115
-
116
-#pragma mark Private
117
-
118
-- (void)registerObservers {
119
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleUpdateViewPropsNotification:) name:updateViewPropsNotificationName object:nil];
120
-}
121
-
122
-- (void)handleUpdateViewPropsNotification:(NSNotification *)notification {
123
-    NSDictionary *props = [notification.userInfo objectForKey:@"props"];
124
-    [self.view setProps:props];
125
-}
126
-
127
-@end

Loading…
取消
儲存