Skip to content

Commit

Permalink
Release/3.13.0 (#80) (#81)
Browse files Browse the repository at this point in the history
Release v3.13.0
  • Loading branch information
mukuagar authored Aug 21, 2024
1 parent 2879a9e commit 6e77128
Show file tree
Hide file tree
Showing 9 changed files with 101 additions and 10 deletions.
8 changes: 4 additions & 4 deletions KitchenSink.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1834,7 +1834,7 @@
CODE_SIGN_ENTITLEMENTS = KitchenSink/KitchenSink.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 3120;
CURRENT_PROJECT_VERSION = 3130;
DEVELOPMENT_TEAM = 9X38D433RE;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
Expand All @@ -1857,7 +1857,7 @@
"@executable_path/Frameworks",
executable_path/Frameworks,
);
MARKETING_VERSION = 3.12;
MARKETING_VERSION = 3.13;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.webex.sdk.KitchenSinkv3.0;
Expand Down Expand Up @@ -1894,7 +1894,7 @@
CODE_SIGN_ENTITLEMENTS = KitchenSink/KitchenSink.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 3120;
CURRENT_PROJECT_VERSION = 3130;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 9X38D433RE;
ENABLE_BITCODE = NO;
Expand All @@ -1913,7 +1913,7 @@
"@executable_path/Frameworks",
executable_path/Frameworks,
);
MARKETING_VERSION = 3.12;
MARKETING_VERSION = 3.13;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.webex.sdk.KitchenSinkv3.0;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down
90 changes: 89 additions & 1 deletion KitchenSink/Controllers/CallViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
private var shareConfig: ShareConfig? // to store share config locally and send when screen-share extension connected
private var isPhoneNumber = false
private var moveMeeting = false
var counter: Int = 0
// MARK: Initializers
init(space: Space, addedCall: Bool = false, currentCallId: String = "", oldCall: Call? = nil, incomingCall: Bool = false, call: Call? = nil, isPhoneNumber: Bool = false, moveMeeting: Bool = false) {
self.space = space
Expand Down Expand Up @@ -1142,7 +1143,22 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
})
}
}


// Audio Dump
guard let isRecordingAudioDump = call?.isRecordingAudioDump else {
print("Error: call.isRecordingAudioDump is nil")
return
}
let title = isRecordingAudioDump ? "Stop Recording Audio Dump" : "Start Recording Audio Dump"
alertController.addAction(UIAlertAction(title: title, style: .default) { _ in
if isRecordingAudioDump {
self.stopRecordingAudioDump()
} else {
self.startRecordingAudioDump()
}
})

// Advanced Camera APIs
alertController.addAction(UIAlertAction(title: "Video Torch Mode - \(String(describing: self.torchMode))", style: .default) { _ in
guard var index = torchModes.firstIndex(of: self.torchMode) else { return }
if index == torchModes.count - 1 {
Expand Down Expand Up @@ -2777,3 +2793,75 @@ extension UIScrollView {
return value
}
}

// Audio Dump
extension CallViewController {
func startRecordingAudioDump() {
guard let call = call else {
print("Error: call is nil")
return
}

call.canStartRecordingAudioDump(completionHandler: { err in
if err == nil
{
call.startRecordingAudioDump(completionHandler: { err in
if err == nil {
print("Started recording audio dump")
self.slideInStateView(slideInMsg: "Started recording audio dump")
self.durationLabel.isHidden = false
self.startTimer()
} else {
self.slideInStateView(slideInMsg: "Start audio dump error \(err.debugDescription)")
}
})
} else {
self.slideInStateView(slideInMsg: "Start audio dump error \(err.debugDescription)")
}
})
}

func stopRecordingAudioDump() {
guard let call = call else {
print("Error: call is nil")
return
}
if call.isRecordingAudioDump {
call.stopRecordingAudioDump(completionHandler: { err in
if err == nil {
print("Stopped recording audio dump")
self.slideInStateView(slideInMsg: "Stopped recording audio dump")
self.durationLabel.isHidden = true
self.stopTimer()
} else {
self.slideInStateView(slideInMsg: "Stop audio dump error \(err.debugDescription)")
}
})
} else {
self.slideInStateView(slideInMsg: "Stop audio dump error: Not currently recording")
}
}
}

extension CallViewController {
@objc func timerFired() {
counter += 1
let hours = counter / 3600
let minutes = (counter % 3600) / 60
let seconds = counter % 60
durationLabel.text = "Audio dump recording: \(String(format: "%02d:%02d:%02d", hours, minutes, seconds))"
}

func startTimer() {
counter = 0
timer.invalidate() // Invalidate the timer if it already exists

// Start a new timer
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: true)
}

func stopTimer() {
// Stop the timer
timer.invalidate()
}
}
1 change: 1 addition & 0 deletions KitchenSink/NewUI/Views/LoginView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ struct LoginView: View {
/// Toggles the state of FedRAMP mode.
func toggleFedRampMode() {
isFedRAMPEnabled.toggle()
model.isFedRAMPMode = isFedRAMPEnabled
}

/// Initiates a login action with an authorization code using the model.
Expand Down
1 change: 1 addition & 0 deletions KitchenSink/NewUI/Views/MeetingPasswordAlertView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ struct MeetingPasswordAlertView: View {
}
.onTapGesture {
if !viewModel.hostKey.isEmpty {
viewModel.meetingPinOrPassword = viewModel.hostKey
viewModel.isModerator = true
}
viewModel.connectCall(selfVideoView: selfVideoView, remoteVideoViewRepresentable: remoteVideoView, screenShareView: screenShareView)
Expand Down
1 change: 1 addition & 0 deletions KitchenSink/NewUI/Views/SettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ struct SettingsView: View {
Text(model.profile.name ?? "")
.font(.title)
.padding(.leading, 15)
.accessibilityIdentifier("profileName")
Text(model.profile.status ?? "")
.font(.headline)
.padding(.leading, 15)
Expand Down
2 changes: 1 addition & 1 deletion LICENCE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2016-2023 Cisco Systems, Inc.
Copyright (c) 2016-2024 Cisco Systems, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
8 changes: 4 additions & 4 deletions Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ target 'KitchenSink' do
use_frameworks!

# Pods for KitchenSink
pod 'WebexSDK','~> 3.12.0'
# pod 'WebexSDK/Meeting','~> 3.12.0' # Uncomment this line and comment the above line for Meeting-only SDK
# pod 'WebexSDK/Wxc','~> 3.12.0' # Uncomment this line and comment the above line for Calling-only SDK
pod 'WebexSDK','~> 3.13.0'
# pod 'WebexSDK/Meeting','~> 3.13.0' # Uncomment this line and comment the above line for Meeting-only SDK
# pod 'WebexSDK/Wxc','~> 3.13.0' # Uncomment this line and comment the above line for Calling-only SDK


target 'KitchenSinkUITests' do
Expand All @@ -23,7 +23,7 @@ target 'KitchenSinkBroadcastExtension' do
use_frameworks!

# Pods for KitchenSinkBroadcastExtension
pod 'WebexBroadcastExtensionKit','~> 3.12.0'
pod 'WebexBroadcastExtensionKit','~> 3.13.0'

end

Binary file added images/WebexSDK.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/wbxaecodec.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 6e77128

Please sign in to comment.