Refine loading view of share extension.

This commit is contained in:
Matthew Chen 2017-12-01 10:48:18 -05:00
parent eaebec6222
commit 8cc33b3de1
33 changed files with 166 additions and 67 deletions

View File

@ -26,7 +26,7 @@
343D3D9B1E9283F100165CA4 /* BlockListUIUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 343D3D9A1E9283F100165CA4 /* BlockListUIUtils.m */; };
34480B361FD0929200BC14EF /* ShareAppExtensionContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 34480B351FD0929200BC14EF /* ShareAppExtensionContext.m */; };
34480B491FD0A60200BC14EF /* OWSMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B481FD0A60200BC14EF /* OWSMath.h */; };
34480B521FD0A7A400BC14EF /* OWSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B4A1FD0A7A200BC14EF /* OWSLogger.h */; };
34480B521FD0A7A400BC14EF /* OWSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B4A1FD0A7A200BC14EF /* OWSLogger.h */; settings = {ATTRIBUTES = (Public, ); }; };
34480B531FD0A7A400BC14EF /* OWSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 34480B4B1FD0A7A300BC14EF /* OWSLogger.m */; };
34480B551FD0A7A400BC14EF /* DebugLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B4D1FD0A7A300BC14EF /* DebugLogger.h */; };
34480B561FD0A7A400BC14EF /* DebugLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 34480B4E1FD0A7A300BC14EF /* DebugLogger.m */; };
@ -43,7 +43,9 @@
34533F181EA8D2070006114F /* OWSAudioAttachmentPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 34533F171EA8D2070006114F /* OWSAudioAttachmentPlayer.m */; };
3453D8EA1EC0D4ED003F9E6F /* OWSAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3453D8E91EC0D4ED003F9E6F /* OWSAlerts.swift */; };
345671011E89A5F1006EE662 /* ThreadUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 345671001E89A5F1006EE662 /* ThreadUtil.m */; };
3461284B1FD0B94000532771 /* SAELoadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3461284A1FD0B93F00532771 /* SAELoadViewController.swift */; };
346129321FD1A26100532771 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 346129051FD1A25B00532771 /* Localizable.strings */; };
346129341FD1A88700532771 /* OWSSwiftUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346129331FD1A88700532771 /* OWSSwiftUtils.swift */; };
346B66311F4E29B200E5122F /* CropScaleImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346B66301F4E29B200E5122F /* CropScaleImageViewController.swift */; };
3471B1DA1EB7C63600F6AEC8 /* NewNonContactConversationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3471B1D91EB7C63600F6AEC8 /* NewNonContactConversationViewController.m */; };
3472229F1EB22FFE00E53955 /* AddToGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3472229E1EB22FFE00E53955 /* AddToGroupViewController.m */; };
@ -130,7 +132,6 @@
34D9134D1F66DB7C00722898 /* ModalActivityIndicatorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D9134C1F66DB7C00722898 /* ModalActivityIndicatorViewController.swift */; };
34D99C8C1F27B13B00D284D6 /* OWSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34D99C8B1F27B13B00D284D6 /* OWSViewController.m */; };
34D99C931F2937CC00D284D6 /* OWSAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D99C911F2937CC00D284D6 /* OWSAnalytics.swift */; };
34D99C941F2937CC00D284D6 /* OWSSwiftUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D99C921F2937CC00D284D6 /* OWSSwiftUtils.swift */; };
34DFCB851E8E04B500053165 /* AddToBlockListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34DFCB841E8E04B500053165 /* AddToBlockListViewController.m */; };
34E3E5681EC4B19400495BAC /* AudioProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E3E5671EC4B19400495BAC /* AudioProgressView.swift */; };
34E3EF0D1EFC235B007F6822 /* DebugUIDiskUsage.m in Sources */ = {isa = PBXBuildFile; fileRef = 34E3EF0C1EFC235B007F6822 /* DebugUIDiskUsage.m */; };
@ -197,7 +198,6 @@
4542F0961EBB9E9A00C7EE92 /* Promise+retainUntilComplete.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4542F0951EBB9E9A00C7EE92 /* Promise+retainUntilComplete.swift */; };
4542F0971EBB9E9A00C7EE92 /* Promise+retainUntilComplete.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4542F0951EBB9E9A00C7EE92 /* Promise+retainUntilComplete.swift */; };
45464DBC1DFA041F001D3FD6 /* DataChannelMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45464DBB1DFA041F001D3FD6 /* DataChannelMessage.swift */; };
454EBAB31F2BC08800ACE0BB /* OWSSwiftUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D99C921F2937CC00D284D6 /* OWSSwiftUtils.swift */; };
454EBAB41F2BE14C00ACE0BB /* OWSAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D99C911F2937CC00D284D6 /* OWSAnalytics.swift */; };
4556FA681F54AA9500AF40DD /* DebugUIProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4556FA671F54AA9500AF40DD /* DebugUIProfile.swift */; };
4556FA691F54AA9500AF40DD /* DebugUIProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4556FA671F54AA9500AF40DD /* DebugUIProfile.swift */; };
@ -527,6 +527,7 @@
3453D8E91EC0D4ED003F9E6F /* OWSAlerts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSAlerts.swift; sourceTree = "<group>"; };
345670FF1E89A5F1006EE662 /* ThreadUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadUtil.h; sourceTree = "<group>"; };
345671001E89A5F1006EE662 /* ThreadUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThreadUtil.m; sourceTree = "<group>"; };
3461284A1FD0B93F00532771 /* SAELoadViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SAELoadViewController.swift; sourceTree = "<group>"; };
346129061FD1A25B00532771 /* bs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bs; path = Signal/translations/bs.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
346129071FD1A25B00532771 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = Signal/translations/he.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
346129081FD1A25B00532771 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = Signal/translations/hu.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
@ -571,6 +572,7 @@
3461292F1FD1A26000532771 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Signal/translations/en.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
346129301FD1A26000532771 /* tr_TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr_TR; path = Signal/translations/tr_TR.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
346129311FD1A26100532771 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Signal/translations/es.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
346129331FD1A88700532771 /* OWSSwiftUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSSwiftUtils.swift; sourceTree = "<group>"; };
346B66301F4E29B200E5122F /* CropScaleImageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CropScaleImageViewController.swift; sourceTree = "<group>"; };
3471B1D81EB7C63600F6AEC8 /* NewNonContactConversationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewNonContactConversationViewController.h; sourceTree = "<group>"; };
3471B1D91EB7C63600F6AEC8 /* NewNonContactConversationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewNonContactConversationViewController.m; sourceTree = "<group>"; };
@ -724,7 +726,6 @@
34D99C8A1F27B13B00D284D6 /* OWSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSViewController.h; sourceTree = "<group>"; };
34D99C8B1F27B13B00D284D6 /* OWSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSViewController.m; sourceTree = "<group>"; };
34D99C911F2937CC00D284D6 /* OWSAnalytics.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSAnalytics.swift; sourceTree = "<group>"; };
34D99C921F2937CC00D284D6 /* OWSSwiftUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSSwiftUtils.swift; sourceTree = "<group>"; };
34DFCB831E8E04B400053165 /* AddToBlockListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddToBlockListViewController.h; sourceTree = "<group>"; };
34DFCB841E8E04B500053165 /* AddToBlockListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddToBlockListViewController.m; sourceTree = "<group>"; };
34E3E5671EC4B19400495BAC /* AudioProgressView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AudioProgressView.swift; sourceTree = "<group>"; };
@ -1146,6 +1147,7 @@
34480B481FD0A60200BC14EF /* OWSMath.h */,
34480B4F1FD0A7A300BC14EF /* OWSScrubbingLogFormatter.h */,
34480B511FD0A7A400BC14EF /* OWSScrubbingLogFormatter.m */,
346129331FD1A88700532771 /* OWSSwiftUtils.swift */,
);
path = utils;
sourceTree = "<group>";
@ -1437,6 +1439,7 @@
4535186F1FC635DD00210559 /* Info.plist */,
346129051FD1A25B00532771 /* Localizable.strings */,
4535186C1FC635DD00210559 /* MainInterface.storyboard */,
3461284A1FD0B93F00532771 /* SAELoadViewController.swift */,
4535186A1FC635DD00210559 /* ShareViewController.swift */,
34480B371FD092A900BC14EF /* SignalShareExtension-Bridging-Header.h */,
34480B381FD092E300BC14EF /* SignalShareExtension-Prefix.pch */,
@ -1449,9 +1452,9 @@
453518931FC63DBF00210559 /* SignalMessaging */ = {
isa = PBXGroup;
children = (
34480B5C1FD0A98800BC14EF /* categories */,
453518951FC63DBF00210559 /* Info.plist */,
34480B5A1FD0A7E300BC14EF /* SignalMessaging-Prefix.pch */,
34480B5C1FD0A98800BC14EF /* categories */,
453518941FC63DBF00210559 /* SignalMessaging.h */,
453518A01FC63DD500210559 /* StorageCoordinator.swift */,
34480B471FD0A60200BC14EF /* utils */,
@ -1704,7 +1707,6 @@
34D99C911F2937CC00D284D6 /* OWSAnalytics.swift */,
34D5CC941EA6AFAD005515DB /* OWSContactsSyncing.h */,
34D5CC951EA6AFAD005515DB /* OWSContactsSyncing.m */,
34D99C921F2937CC00D284D6 /* OWSSwiftUtils.swift */,
4579431C1E7C8CE9008ED0C0 /* Pastelog.h */,
4579431D1E7C8CE9008ED0C0 /* Pastelog.m */,
450DF2041E0D74AC003D14BE /* Platform.swift */,
@ -2670,6 +2672,7 @@
files = (
4535186B1FC635DD00210559 /* ShareViewController.swift in Sources */,
34480B361FD0929200BC14EF /* ShareAppExtensionContext.m in Sources */,
3461284B1FD0B94000532771 /* SAELoadViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2682,6 +2685,7 @@
34480B531FD0A7A400BC14EF /* OWSLogger.m in Sources */,
34480B641FD0A98800BC14EF /* UIView+OWS.m in Sources */,
34480B671FD0AA9400BC14EF /* UIFont+OWS.m in Sources */,
346129341FD1A88700532771 /* OWSSwiftUtils.swift in Sources */,
34480B591FD0A7A400BC14EF /* OWSScrubbingLogFormatter.m in Sources */,
34480B561FD0A7A400BC14EF /* DebugLogger.m in Sources */,
);
@ -2874,7 +2878,6 @@
34B3F88B1E8DF1700035BE1A /* OWSLinkedDevicesTableViewController.m in Sources */,
45666F7E1D9C0814008FE134 /* OWSDatabaseMigrationRunner.m in Sources */,
4579431E1E7C8CE9008ED0C0 /* Pastelog.m in Sources */,
34D99C941F2937CC00D284D6 /* OWSSwiftUtils.swift in Sources */,
34C42D661F4734ED0072EC04 /* OWSContactOffersInteraction.m in Sources */,
34B3F8941E8DF1710035BE1A /* HomeViewController.m in Sources */,
34E8BF381EE9E2FD00F5F4CA /* FingerprintViewScanController.m in Sources */,
@ -2936,7 +2939,6 @@
45360B911F952AA900FA666C /* MarqueeLabel.swift in Sources */,
45FBC5D21DF8592E00E9B410 /* SignalCall.swift in Sources */,
451A13B21E13DED2000A50FD /* CallNotificationsAdapter.swift in Sources */,
454EBAB31F2BC08800ACE0BB /* OWSSwiftUtils.swift in Sources */,
4542F0971EBB9E9A00C7EE92 /* Promise+retainUntilComplete.swift in Sources */,
451DA3C91F1489BE008E2423 /* OWSAlerts.swift in Sources */,
45855F381D9498A40084F340 /* OWSContactAvatarBuilder.m in Sources */,
@ -3530,6 +3532,7 @@
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OBJC_BRIDGING_HEADER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
@ -3600,6 +3603,7 @@
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_OBJC_BRIDGING_HEADER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
@ -3671,6 +3675,7 @@
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_OBJC_BRIDGING_HEADER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";

View File

@ -5,6 +5,7 @@
import Foundation
import MobileCoreServices
import SignalServiceKit
import SignalMessaging
enum SignalAttachmentError: Error {
case missingData

View File

@ -5,6 +5,7 @@
import Foundation
import PromiseKit
import SignalServiceKit
import SignalMessaging
/**
* Used to distribute our profile key to legacy linked devices, newly linked devices will have our profile key as part of provisioning.

View File

@ -5,6 +5,7 @@
import Foundation
import JSQMessagesViewController
import SignalServiceKit
import SignalMessaging
@objc
class OWSMessagesBubbleImageFactory: NSObject {

View File

@ -3,6 +3,7 @@
//
import UIKit
import SignalMessaging
@objc
class SlideOffAnimatedTransition: NSObject, UIViewControllerAnimatedTransitioning {

View File

@ -6,6 +6,7 @@ import Foundation
import WebRTC
import PromiseKit
import SignalServiceKit
import SignalMessaging
// TODO: Add category so that button handlers can be defined where button is created.
// TODO: Ensure buttons enabled & disabled as necessary.

View File

@ -4,6 +4,7 @@
import Foundation
import MediaPlayer
import SignalMessaging
class OWSLayerView: UIView {
let layoutCallback : (() -> Void)

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
class DebugUICalling: DebugUIPage {

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
class DebugUIProfile: DebugUIPage {

View File

@ -3,6 +3,7 @@
//
import Foundation
import SignalMessaging
private class IntroductingReadReceiptsExperienceUpgradeViewController: ExperienceUpgradeViewController {

View File

@ -5,6 +5,7 @@
import Foundation
import PromiseKit
import SignalServiceKit
import SignalMessaging
import YYImage
class GifPickerCell: UICollectionViewCell {

View File

@ -5,6 +5,7 @@
import Foundation
import SignalServiceKit
import Reachability
import SignalMessaging
@objc
protocol GifPickerViewControllerDelegate: class {

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
@objc
enum MessageMetadataViewMode: UInt {

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
@objc enum MessageRecipientStatus: Int {
case uploading

View File

@ -5,6 +5,7 @@
import Foundation
import AVFoundation
import SignalServiceKit
import SignalMessaging
public let CallAudioServiceSessionChanged = Notification.Name("CallAudioServiceSessionChanged")

View File

@ -6,6 +6,7 @@ import Foundation
import PromiseKit
import WebRTC
import SignalServiceKit
import SignalMessaging
/**
* `CallService` is a global singleton that manages the state of WebRTC-backed Signal Calls

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
/**
* Manage call related UI in a pre-CallKit world.

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
/**
* Creates an outbound call via WebRTC.

View File

@ -6,6 +6,7 @@ import Foundation
import PromiseKit
import WebRTC
import SignalServiceKit
import SignalMessaging
// HACK - Seeing crazy SEGFAULTs on iOS9 when accessing these objc externs.
// iOS10 seems unaffected. Reproducible for ~1 in 3 calls.

View File

@ -7,6 +7,7 @@ import UIKit
import CallKit
import AVFoundation
import SignalServiceKit
import SignalMessaging
/**
* Connects user interface to the CallService using CallKit.

View File

@ -6,6 +6,7 @@ import Foundation
import PromiseKit
import CallKit
import SignalServiceKit
import SignalMessaging
import WebRTC
protocol CallUIAdaptee {

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
@objc(OWSWebRTCCallMessageHandler)
class WebRTCCallMessageHandler: NSObject, OWSCallMessageHandler {

View File

@ -6,6 +6,7 @@ import Foundation
import Contacts
import ContactsUI
import SignalServiceKit
import SignalMessaging
enum Result<T, ErrorType> {
case success(T)

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
class ExperienceUpgrade: TSYapDatabaseObject {
let title: String

View File

@ -5,6 +5,7 @@
import Foundation
import PromiseKit
import SignalServiceKit
import SignalMessaging
class OWS106EnsureProfileComplete: OWSDatabaseMigration {

View File

@ -6,6 +6,7 @@ import Foundation
import PromiseKit
import PushKit
import SignalServiceKit
import SignalMessaging
public enum PushRegistrationError: Error {
case assertionError(description: String)

View File

@ -5,6 +5,7 @@
import Foundation
import ObjectiveC
import SignalServiceKit
import SignalMessaging
// Stills should be loaded before full GIFs.
enum GiphyRequestPriority {

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
class AttachmentPointerView: UIView {

View File

@ -4,6 +4,7 @@
import Foundation
import SignalServiceKit
import SignalMessaging
@objc class OWSFlatButton: UIView {
let TAG = "[OWSFlatButton]"

View File

@ -10,4 +10,5 @@ FOUNDATION_EXPORT double SignalMessagingVersionNumber;
//! Project version string for SignalMessaging.
FOUNDATION_EXPORT const unsigned char SignalMessagingVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <SignalMessaging/PublicHeader.h>
// The public headers of the framework
#import <SignalMessaging/OWSLogger.h>

View File

@ -7,7 +7,7 @@ import Foundation
/**
* We synchronize access to state in this class using this queue.
*/
func assertOnQueue(_ queue: DispatchQueue) {
public func assertOnQueue(_ queue: DispatchQueue) {
if #available(iOS 10.0, *) {
dispatchPrecondition(condition: .onQueue(queue))
} else {
@ -15,7 +15,7 @@ func assertOnQueue(_ queue: DispatchQueue) {
}
}
func owsFail(_ message: String) {
public func owsFail(_ message: String) {
Logger.error(message)
Logger.flush()
assertionFailure(message)

View File

@ -0,0 +1,85 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
import UIKit
import SignalMessaging
import PureLayout
// All Observer methods will be invoked from the main thread.
protocol SAELoadViewDelegate: class {
func shareExtensionWasCancelled()
}
class SAELoadViewController: UIViewController {
weak var delegate: SAELoadViewDelegate?
var activityIndicator: UIActivityIndicatorView?
// MARK: Initializers and Factory Methods
init(delegate: SAELoadViewDelegate) {
self.delegate = delegate
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func loadView() {
super.loadView()
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel,
target: self,
action: #selector(cancelPressed))
self.navigationItem.title = "Signal"
self.view.backgroundColor = UIColor.ows_signalBrandBlue()
let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle:.whiteLarge)
self.activityIndicator = activityIndicator
self.view.addSubview(activityIndicator)
activityIndicator.autoCenterInSuperview()
let label = UILabel()
label.textColor = UIColor.white
label.font = UIFont.ows_mediumFont(withSize: 18)
label.text = NSLocalizedString("SHARE_EXTENSION_LOADING",
comment: "Indicates that the share extension is still loading.")
self.view.addSubview(label)
label.autoHCenterInSuperview()
label.autoPinEdge(.top, to: .bottom, of: activityIndicator, withOffset: 25)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.isNavigationBarHidden = false
guard let activityIndicator = activityIndicator else {
return
}
activityIndicator.startAnimating()
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
guard let activityIndicator = activityIndicator else {
return
}
activityIndicator.stopAnimating()
}
// MARK: - Event Handlers
@objc func cancelPressed(sender: UIButton) {
guard let delegate = delegate else {
owsFail("\(self.logTag) missing delegate")
return
}
delegate.shareExtensionWasCancelled()
}
}

View File

@ -8,7 +8,7 @@ import SignalMessaging
import PureLayout
import SignalServiceKit
class ShareViewController: UIViewController {
class ShareViewController: UINavigationController, SAELoadViewDelegate {
override func loadView() {
super.loadView()
@ -16,44 +16,46 @@ class ShareViewController: UIViewController {
// This should be the first thing we do.
SetCurrentAppContext(ShareAppExtensionContext())
// DebugLogger.shared().enableTTYLogging()
// if _isDebugAssertConfiguration() {
// DebugLogger.shared().enableFileLogging()
// } else {
// // TODO: Consult OWSPreferences.loggingIsEnabled.
// DebugLogger.shared().enableFileLogging()
// }
// DebugLogger.shared().enableTTYLogging()
// if _isDebugAssertConfiguration() {
// DebugLogger.shared().enableFileLogging()
// } else {
// // TODO: Consult OWSPreferences.loggingIsEnabled.
// DebugLogger.shared().enableFileLogging()
// }
_ = AppVersion()
//DDLogWarn(@"%@ application: didFinishLaunchingWithOptions.", self.logTag);
//
//// We need to do this _after_ we set up logging but _before_ we do
//// anything else.
//[self ensureIsReadyForAppExtensions];
//
//#if RELEASE
// // ensureIsReadyForAppExtensions may have changed the state of the logging
// // preference (due to [NSUserDefaults migrateToSharedUserDefaults]), so honor
// // that change if necessary.
//if (loggingIsEnabled && !OWSPreferences.loggingIsEnabled) {
// [DebugLogger.sharedLogger disableFileLogging];
//}
//#endif
//
//[AppVersion instance];
//
//[self startupLogging];
//DDLogWarn(@"%@ application: didFinishLaunchingWithOptions.", self.logTag);
//
//// We need to do this _after_ we set up logging but _before_ we do
//// anything else.
//[self ensureIsReadyForAppExtensions];
//
//#if RELEASE
// // ensureIsReadyForAppExtensions may have changed the state of the logging
// // preference (due to [NSUserDefaults migrateToSharedUserDefaults]), so honor
// // that change if necessary.
//if (loggingIsEnabled && !OWSPreferences.loggingIsEnabled) {
// [DebugLogger.sharedLogger disableFileLogging];
//}
//#endif
//
//[AppVersion instance];
//
//[self startupLogging];
Logger.debug("\(self.logTag()) \(#function)")
print("\(self.logTag()) \(#function) \(self.view.frame)")
let loadViewController = SAELoadViewController(delegate:self)
self.pushViewController(loadViewController, animated: false)
self.isNavigationBarHidden = false
}
override func viewDidLoad() {
super.viewDidLoad()
showLoadingAnimation()
let proofOfSharedFramework = StorageCoordinator.shared.path
let proofOfSSK = textSecureServerURL
@ -67,34 +69,6 @@ class ShareViewController: UIViewController {
print("\(self.logTag()) \(#function) \(self.view.frame)")
}
private func showLoadingAnimation() {
Logger.debug("\(self.logTag()) \(#function)")
print("\(self.logTag()) \(#function) \(self.view.frame)")
// Proof of cocoapods, utilizes PureLayout
let rootView = UIView()
rootView.backgroundColor = UIColor.ows_signalBrandBlue()
view.addSubview(rootView)
rootView.autoCenterInSuperview()
rootView.autoSetDimension(.width, toSize: 200)
rootView.autoSetDimension(.height, toSize: 300)
rootView.layer.cornerRadius = 3
let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle:.whiteLarge)
rootView.addSubview(activityIndicator)
activityIndicator.autoCenterInSuperview()
activityIndicator.startAnimating()
let label = UILabel()
label.textColor = UIColor.white
label.font = UIFont.ows_mediumFont(withSize: 14)
label.text = NSLocalizedString("SHARE_EXTENSION_LOADING",
comment: "Indicates that the share extension is still loading.")
rootView.addSubview(label)
label.autoHCenterInSuperview()
label.autoPinEdge(.top, to: .bottom, of: activityIndicator, withOffset: 10)
}
override func viewWillAppear(_ animated: Bool) {
Logger.debug("\(self.logTag()) \(#function)")
print("\(self.logTag()) \(#function) \(self.view.frame)")
@ -108,4 +82,10 @@ class ShareViewController: UIViewController {
super.viewDidAppear(animated)
}
// MARK: SAELoadViewDelegate
public func shareExtensionWasCancelled() {
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
}
}