Commit 532c3614 by pierce

fixed bugs

parent 63b82f6e
......@@ -12,7 +12,9 @@ import SwiftyJSON
import RxSwift
import RxCocoa
@objcMembers open class BaseModel: NSObject, YYModel, NSCoding {
@objcMembers open class BaseModel: NSObject, YYModel, NSSecureCoding {
public static var supportsSecureCoding: Bool = true
open func encode(with coder: NSCoder) {
self.modelInit(with: coder)
......
......@@ -89,9 +89,9 @@ public struct DevConfig {
case .release:
return false
case .testing:
return true
return false
case .developing:
return true
return false
}
}
......
......@@ -67,6 +67,7 @@ public class GDVideoTransformer: BaseViewModel {
exportSession.outputURL = mp4Url
exportSession.shouldOptimizeForNetworkUse = true
exportSession.outputFileType = .mp4
exportSession.videoComposition = self.getVideoComposition(asset: avAsset)
exportSession.exportAsynchronously {
......@@ -104,4 +105,41 @@ public class GDVideoTransformer: BaseViewModel {
}
public static func getVideoComposition(asset: AVAsset) -> AVMutableVideoComposition? {
guard let videoTrack = asset.tracks(withMediaType: .video).first else {
return nil
}
let composition = AVMutableComposition()
let videoComposition = AVMutableVideoComposition()
var videoSize = videoTrack.naturalSize
let tracks = asset.tracks(withMediaType: .video)
if tracks.count > 0 {
let videoTrack = tracks[0]
let t = videoTrack.preferredTransform
if t.a == 0 && t.b == 1.0 && t.c == -1.0 && t.d == 0 {
videoSize = CGSize(width: videoSize.height, height: videoSize.width)
}
}
composition.naturalSize = videoSize
videoComposition.renderSize = videoSize
videoComposition.frameDuration = CMTimeMakeWithSeconds(1 / Double(videoTrack.nominalFrameRate), preferredTimescale: 600)
let compositionVideoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)
try? compositionVideoTrack?.insertTimeRange(CMTimeRangeMake(start: .zero, duration: asset.duration), of: videoTrack, at: .zero)
let layerInst = AVMutableVideoCompositionLayerInstruction(assetTrack: videoTrack)
layerInst.setTransform(videoTrack.preferredTransform, at: .zero)
let inst = AVMutableVideoCompositionInstruction()
inst.timeRange = CMTimeRangeMake(start: .zero, duration: asset.duration)
inst.layerInstructions = [layerInst]
videoComposition.instructions = [inst]
return videoComposition
}
}
......@@ -32,7 +32,7 @@ class Application: NSObject {
private override init() {
super.init()
let isVerified = (UserDefaults.standard.object(forKey: GDBaseBussinessUDKey.isCurrentVersionVerified) as? Bool) ?? false
let isVerified = (UserDefaults.standard.object(forKey: GDBaseBussinessUDKey.isCurrentVersionVerified) as? Bool) ?? true
isCurrentVersionVerified.accept(isVerified)
isCurrentVersionVerified.distinctUntilChanged().subscribe(onNext: { isVerified in
......
......@@ -11,7 +11,7 @@ import GDToolBox
import GDRouter
class GDFakeMessageCenter: BaseViewModel {
static let shared = GDFakeMessageCenter()
var lastRequestDate: String?
......@@ -81,7 +81,7 @@ class GDFakeMessageCenter: BaseViewModel {
guard let self = self else { return }
if model.roomlist.count == 0 {
// 没有数据
// self.clean()
// self.clean()
return
}
......@@ -181,24 +181,24 @@ class GDFakeMessageCenter: BaseViewModel {
}
for user in userDict.values {
if user.content.msgList.count > 0 {
hadFakeMessage = true
} else {
continue
}
guard user.launchTime > 0 else {
// 时间无效
// userDict.removeValue(forKey: user.uid)
// fakeFriendList.accept(userDict.keys.map({ $0 }))
// userDict.removeValue(forKey: user.uid)
// fakeFriendList.accept(userDict.keys.map({ $0 }))
continue
}
if user.launchTime > Date().timeStamp.intValue {
continue
}
if user.unreplayNum.value >= 1 {
continue
}
......@@ -206,9 +206,9 @@ class GDFakeMessageCenter: BaseViewModel {
if userList.contains(user) {
continue
}
let messageData = user.content.msgList.removeFirst()
GDlog.verbose("[FakeMessage] 假消息发布1")
switch messageData.type {
......@@ -219,22 +219,22 @@ class GDFakeMessageCenter: BaseViewModel {
GDlog.verbose("[FakeMessage] \(user.user.nickname ?? "") 发布\(messageData.msg ?? "")")
GDRouter.ChatRoom?.addMessage(from: user.uid, fromid: user.uid, touid: currentUid, content: messageData.msg ?? "", failureMsg: false, ext: ["text_type": "7"])
}
user.unreplayNum.accept(user.unreplayNum.value + 1)
if timeNode.count > 0 {
let timeCount = timeNode.count
if user.unreplayNum.value > 0 && user.unreplayNum.value <= timeCount {
user.launchTime = Date().timeStamp.intValue + timeNode[user.unreplayNum.value - 1]
} else {
user.launchTime = Date().timeStamp.intValue + timeNode[user.unreplayNum.value % timeCount]
}
} else {
user.launchTime = Date().timeStamp.intValue + 10
}
}
writeLocal()
......@@ -257,10 +257,10 @@ class GDFakeMessageCenter: BaseViewModel {
UserDefaults.standard.set(date, forKey: GDChatMessageUDKeys.fakeMsgLastDate + currentUid)
}
let listData = try? NSKeyedArchiver.archivedData(withRootObject: userList, requiringSecureCoding: true)
let listData = try? NSKeyedArchiver.archivedData(withRootObject: userList, requiringSecureCoding: false)
UserDefaults.standard.set(listData, forKey: GDChatMessageUDKeys.fakeMsgUserList + currentUid)
let data = try? NSKeyedArchiver.archivedData(withRootObject: userDict, requiringSecureCoding: true)
let data = try? NSKeyedArchiver.archivedData(withRootObject: userDict, requiringSecureCoding: false)
UserDefaults.standard.set(data, forKey: GDChatMessageUDKeys.fakeMsgContent + currentUid)
UserDefaults.standard.set(timeNode, forKey: GDChatMessageUDKeys.fakeMsgTimeNode + currentUid)
......@@ -281,11 +281,11 @@ class GDFakeMessageCenter: BaseViewModel {
if let userListDict = NSKeyedUnarchiver.unarchiveObject(with: userListData) as? [String: GDFakeMessageModel] {
for (index, user) in userListDict.enumerated() {
// if index == 0 {
// user.value.launchTime = Date().timeStamp.intValue
// } else {
user.value.launchTime = 0
// }
// if index == 0 {
// user.value.launchTime = Date().timeStamp.intValue
// } else {
user.value.launchTime = 0
// }
}
self.userDict = userListDict
......@@ -306,10 +306,10 @@ class GDFakeMessageCenter: BaseViewModel {
}
if let timeNode = UserDefaults.standard.object(forKey: GDChatMessageUDKeys.fakeMsgTimeNode + currentUid) as? [Int] {
self.timeNode = timeNode
}
fakeFriendList.accept(userDict.keys.map({ $0 }))
self.timeNode = timeNode
}
fakeFriendList.accept(userDict.keys.map({ $0 }))
}
......@@ -328,7 +328,7 @@ class GDFakeMessageCenter: BaseViewModel {
let user = userList.removeFirst()
let messageData = userDict[user.uid]?.content.msgList.removeFirst() ?? .init()
GDlog.verbose("[FakeMessage] 假消息发布2")
switch messageData.type {
......@@ -362,7 +362,7 @@ class GDFakeMessageCenter: BaseViewModel {
for uid in userDict.keys {
GDRouter.ChatRoom?.deleteMessage(with: uid)
}
}
func deleteFakeFriend(fid: String) {
......
......@@ -10,6 +10,7 @@ import UIKit
import RxSwift
import RxCocoa
import GDToolBox
import GDRouter
class GDRechargeView: BaseView {
......@@ -178,30 +179,27 @@ class GDRechargeView: BaseView {
override func bindViewModel() {
super.bindViewModel()
//TODO:Live: added By Pidan
// viewModel.viewController = GDLiveHelper.shared.liveVC
//
// let confirmAction = confirmBtn.rx.tap
// let selection = collectionView.rx.modelSelected(GDStoreModel.self).map { $0.rid }.asDriver(onErrorJustReturn: nil)
//
// let output = viewModel.transform(input: .init(confirmAction: confirmAction, selection: selection))
//
// // 钻石数量
// output.diamondNum.drive(diamondNumBtn.rx.title()).disposed(by: disposeBag)
//
// // 充值点数据
// output.rechargeData.drive(collectionView.rx.items(cellIdentifier: reuseIdentifier, cellType: GDRechargeViewCell.self)) { index, element, cell in
// cell.setup(element)
// output.selectRid.bind(to: cell.selectRid).disposed(by: cell.cellDisposeBag ?? self.disposeBag)
// }.disposed(by: disposeBag)
//
// // 客服按钮点击
// serviceBtn.rx.tap.subscribe(onNext: {[weak self] (_) in
// self?.viewModel.viewController?.navigationController?.pushViewController(GDServiceController(), animated: true)
// if GDLiveHelper.shared.liveState.value == .none {
// self?.dismiss()
// }
// }).disposed(by: disposeBag)
viewModel.viewController = UIViewController.topViewController()
let confirmAction = confirmBtn.rx.tap
let selection = collectionView.rx.modelSelected(GDStoreModel.self).map { $0.rid }.asDriver(onErrorJustReturn: nil)
let output = viewModel.transform(input: .init(confirmAction: confirmAction, selection: selection))
// 钻石数量
output.diamondNum?.drive(diamondNumBtn.rx.title()).disposed(by: disposeBag)
// 充值点数据
output.rechargeData?.drive(collectionView.rx.items(cellIdentifier: reuseIdentifier, cellType: GDRechargeViewCell.self)) { index, element, cell in
cell.setup(element)
output.selectRid?.bind(to: cell.selectRid).disposed(by: cell.cellDisposeBag ?? self.disposeBag)
}.disposed(by: disposeBag)
// 客服按钮点击
serviceBtn.rx.tap.subscribe(onNext: { (_) in
GDRouter.ChatRoom?.showServiceCharRoom()
}).disposed(by: disposeBag)
}
// MARK: Method
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment