Added local pods as source code.
|
@ -0,0 +1 @@
|
|||
3.2
|
|
@ -4,42 +4,32 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import EmbeddedSocial
|
||||
//import EmbeddedSocial
|
||||
import UserNotifications
|
||||
import HockeySDK
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
let menu = MyAppMenu()
|
||||
// let menu = MyAppMenu()
|
||||
|
||||
func application(_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||
|
||||
// HockeyApp configuration to enable analytics
|
||||
BITHockeyManager.shared().configure(withIdentifier: "46cc5ba83a8043b9a4b67cc0f9c6c9a2")
|
||||
BITHockeyManager.shared().start()
|
||||
BITHockeyManager.shared().authenticator.authenticateInstallation()
|
||||
|
||||
window = UIWindow(frame: UIScreen.main.bounds)
|
||||
window?.rootViewController = UIViewController()
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
if TARGET_OS_SIMULATOR != 0 {
|
||||
BITHockeyManager.shared().isUpdateManagerDisabled = true
|
||||
}
|
||||
|
||||
if (ProcessInfo.processInfo.environment["EmbeddedSocial_MOCK_SERVER"] != nil) {
|
||||
UIView.setAnimationsEnabled(false)
|
||||
}
|
||||
|
||||
let args = LaunchArguments(app: application,
|
||||
window: window!,
|
||||
launchOptions: launchOptions ?? [:],
|
||||
menuHandler: menu,
|
||||
menuConfiguration: .tab)
|
||||
SocialPlus.shared.start(launchArguments: args)
|
||||
// let args = LaunchArguments(app: application,
|
||||
// window: window!,
|
||||
// launchOptions: launchOptions ?? [:],
|
||||
// menuHandler: menu,
|
||||
// menuConfiguration: .tab)
|
||||
// SocialPlus.shared.start(launchArguments: args)
|
||||
|
||||
if #available(iOS 10.0, *) {
|
||||
let center = UNUserNotificationCenter.current()
|
||||
|
@ -55,20 +45,20 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
return true
|
||||
}
|
||||
|
||||
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any] = [:]) -> Bool {
|
||||
return SocialPlus.shared.application(app, open: url, options: options)
|
||||
}
|
||||
|
||||
/// iOS 8 support
|
||||
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
|
||||
var options: [String: Any] = ["UIApplicationOpenURLOptionsAnnotationKey": annotation]
|
||||
|
||||
if let sourceApplication = sourceApplication {
|
||||
options["UIApplicationOpenURLOptionsSourceApplicationKey"] = sourceApplication
|
||||
}
|
||||
|
||||
return SocialPlus.shared.application(application, open: url as URL, options: options)
|
||||
}
|
||||
// func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any] = [:]) -> Bool {
|
||||
// return SocialPlus.shared.application(app, open: url, options: options)
|
||||
// }
|
||||
//
|
||||
// /// iOS 8 support
|
||||
// func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
|
||||
// var options: [String: Any] = ["UIApplicationOpenURLOptionsAnnotationKey": annotation]
|
||||
//
|
||||
// if let sourceApplication = sourceApplication {
|
||||
// options["UIApplicationOpenURLOptionsSourceApplicationKey"] = sourceApplication
|
||||
// }
|
||||
//
|
||||
// return SocialPlus.shared.application(application, open: url as URL, options: options)
|
||||
// }
|
||||
|
||||
|
||||
/// push notifications
|
||||
|
@ -77,7 +67,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
|
||||
let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
|
||||
print(deviceTokenString)
|
||||
SocialPlus.shared.updateDeviceToken(devictToken: deviceTokenString)
|
||||
// SocialPlus.shared.updateDeviceToken(devictToken: deviceTokenString)
|
||||
|
||||
}
|
||||
|
||||
|
@ -89,7 +79,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
func application(_ application: UIApplication, didReceiveRemoteNotification data: [AnyHashable : Any]) {
|
||||
// Print notification payload data
|
||||
print("Push notification received: \(data)")
|
||||
SocialPlus.shared.didReceiveRemoteNotification(data: data)
|
||||
// SocialPlus.shared.didReceiveRemoteNotification(data: data)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
// Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
/*import Foundation
|
||||
import UIKit
|
||||
import EmbeddedSocial
|
||||
|
||||
class MyAppMenu: SideMenuItemsProvider {
|
||||
|
@ -56,5 +57,5 @@ class MyAppMenu: SideMenuItemsProvider {
|
|||
return false
|
||||
}
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.platform = :ios
|
||||
s.ios.deployment_target = '9.0'
|
||||
s.name = 'EmbeddedSocial'
|
||||
s.version = '0.7.4'
|
||||
s.summary = 'SDK for interacting with the Microsoft Embedded Social service from inside your iOS app.'
|
||||
s.requires_arc = true
|
||||
|
||||
s.description = <<-DESC
|
||||
This is an SDK that works with the Microsoft Embedded Social service to provide social networking functionality inside your iOS application.
|
||||
DESC
|
||||
|
||||
s.homepage = 'https://github.com/Microsoft/EmbeddedSocial-iOS-SDK'
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
s.author = { 'Microsoft' => 'opencode@microsoft.com' }
|
||||
s.source = {
|
||||
:git => 'https://github.com/Microsoft/EmbeddedSocial-iOS-SDK.git',
|
||||
:tag => s.version.to_s,
|
||||
:submodules => true
|
||||
}
|
||||
s.source_files = 'EmbeddedSocial/Sources/**/*.swift'
|
||||
s.resource_bundles = {
|
||||
'EmbeddedSocialResources' => ['EmbeddedSocial/Resources/*.{xcassets,plist}'],
|
||||
'EmbeddedSocialStoryboards' => ['EmbeddedSocial/Sources/**/*.storyboard'],
|
||||
'EmbeddedSocialThemes' => ['EmbeddedSocial/Sources/**/*.plist']
|
||||
}
|
||||
|
||||
# ――― Dependencies ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
s.dependency 'Alamofire', '~> 4.5.0'
|
||||
s.dependency 'SwiftLint', '~> 0.20.1'
|
||||
s.dependency 'SnapKit', '~> 3.2.0'
|
||||
s.dependency 'SlideMenuControllerSwift', '~> 3.0'
|
||||
s.dependency 'TwitterKit', '~> 2.8.0'
|
||||
s.dependency 'GoogleSignIn', '~> 4.0.2'
|
||||
s.dependency 'SDWebImage', '~> 4.0.0'
|
||||
s.dependency 'SwiftGen', '~> 4.2.1'
|
||||
s.dependency 'Sourcery', '~> 0.7.2'
|
||||
s.dependency 'UITextView+Placeholder', '~> 1.2.0'
|
||||
#s.dependency 'OAuthSwift-Local'
|
||||
#s.dependency 'EmbeddedSocial/Vendor/OAuthSwift'
|
||||
#s.dependency 'OAuthSwift', :local => 'EmbeddedSocial/Vendor/OAuthSwift'
|
||||
# s.dependency 'LiveSDK', :local => 'EmbeddedSocial/Vendor/LiveSDK'
|
||||
s.dependency 'SKPhotoBrowser', '~> 4.0.1'
|
||||
s.dependency 'MBProgressHUD', '~> 1.0'
|
||||
s.dependency 'TTTAttributedLabel', '~> 2.0'
|
||||
s.dependency 'HockeySDK/AllFeaturesLib', '~> 5.0.0'
|
||||
s.dependency 'FBSDKCoreKit', '~> 4.24.0'
|
||||
s.dependency 'FBSDKLoginKit', '~> 4.24.0'
|
||||
s.dependency 'FBSDKShareKit', '~> 4.24.0'
|
||||
|
||||
s.subspec 'OAuthSwift-Local' do |ss|
|
||||
ss.source_files = 'EmbeddedSocial/Vendor/OAuthSwift/Sources/*.swift'
|
||||
end
|
||||
|
||||
end
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
import Foundation
|
||||
import SnapKit
|
||||
import FBSDKLoginKit
|
||||
|
||||
public final class SocialPlus {
|
||||
public static let shared = SocialPlus()
|
||||
|
@ -83,6 +84,15 @@ public final class SocialPlus {
|
|||
let c = UpdateNotificationsStatusCommand(handle: UUID().uuidString)
|
||||
cache.cacheOutgoing(c)
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
|
||||
let mgr = FBSDKLoginManager()
|
||||
mgr.logIn(withReadPermissions: ["user_about_me"], from: self.coordinator.navigationStack.navigationController) { p1, p2 in
|
||||
withExtendedLifetime(mgr) {
|
||||
print(p1, p2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fileprivate func startSession(with info: SessionInfo) {
|
||||
|
|
|
@ -1,158 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="17A365" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Linked Accounts View Controller-->
|
||||
<scene sceneID="uhf-g2-Fmi">
|
||||
<objects>
|
||||
<tableViewController storyboardIdentifier="LinkedAccountsViewController" id="xCa-sh-OsW" customClass="LinkedAccountsViewController" customModule="EmbeddedSocial" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="6EZ-Xt-iEg">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<sections>
|
||||
<tableViewSection id="roV-uR-CGz">
|
||||
<cells>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="3XD-HW-gvI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="3XD-HW-gvI" id="eX9-qt-Maq">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="gEH-Ew-hPh">
|
||||
<rect key="frame" x="318" y="6" width="51" height="31"/>
|
||||
<connections>
|
||||
<action selector="onFacebookSwitch:" destination="xCa-sh-OsW" eventType="valueChanged" id="zcB-e7-uQQ"/>
|
||||
</connections>
|
||||
</switch>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sign in with Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5xC-9B-HEf">
|
||||
<rect key="frame" x="16" y="13" width="286" height="18"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="gEH-Ew-hPh" firstAttribute="leading" secondItem="5xC-9B-HEf" secondAttribute="trailing" constant="16" id="0On-wv-LSV"/>
|
||||
<constraint firstItem="gEH-Ew-hPh" firstAttribute="centerY" secondItem="eX9-qt-Maq" secondAttribute="centerY" id="2Ux-Hw-on4"/>
|
||||
<constraint firstItem="5xC-9B-HEf" firstAttribute="centerY" secondItem="eX9-qt-Maq" secondAttribute="centerY" id="EwJ-dM-KYv"/>
|
||||
<constraint firstItem="5xC-9B-HEf" firstAttribute="leading" secondItem="eX9-qt-Maq" secondAttribute="leading" constant="16" id="XQ3-eK-g5Q"/>
|
||||
<constraint firstAttribute="trailing" secondItem="gEH-Ew-hPh" secondAttribute="trailing" constant="8" id="dGA-5a-rGu"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="ukO-Ts-TQ9">
|
||||
<rect key="frame" x="0.0" y="44" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ukO-Ts-TQ9" id="AS8-bi-a3A">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="1xw-uv-s3b">
|
||||
<rect key="frame" x="318" y="6" width="51" height="31"/>
|
||||
<connections>
|
||||
<action selector="onGoogleSwitch:" destination="xCa-sh-OsW" eventType="valueChanged" id="iVV-Nn-eMY"/>
|
||||
</connections>
|
||||
</switch>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sign in with Google" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lYC-4n-irY">
|
||||
<rect key="frame" x="16" y="13" width="286" height="18"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="1xw-uv-s3b" secondAttribute="trailing" constant="8" id="0qJ-sb-DoQ"/>
|
||||
<constraint firstItem="1xw-uv-s3b" firstAttribute="centerY" secondItem="AS8-bi-a3A" secondAttribute="centerY" id="AvN-Jh-CbH"/>
|
||||
<constraint firstItem="lYC-4n-irY" firstAttribute="centerY" secondItem="AS8-bi-a3A" secondAttribute="centerY" id="NvB-jv-wcm"/>
|
||||
<constraint firstItem="1xw-uv-s3b" firstAttribute="leading" secondItem="lYC-4n-irY" secondAttribute="trailing" constant="16" id="YJp-Ka-D7j"/>
|
||||
<constraint firstItem="lYC-4n-irY" firstAttribute="leading" secondItem="AS8-bi-a3A" secondAttribute="leading" constant="16" id="zw8-jU-eOl"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="XAs-Mv-fsu">
|
||||
<rect key="frame" x="0.0" y="88" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="XAs-Mv-fsu" id="ml2-J1-nDU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="0Ak-Ke-Wlv">
|
||||
<rect key="frame" x="318" y="6" width="51" height="31"/>
|
||||
<connections>
|
||||
<action selector="onMicrosoftSwitch:" destination="xCa-sh-OsW" eventType="valueChanged" id="dcu-ob-Bfu"/>
|
||||
</connections>
|
||||
</switch>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sign in with Microsoft" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="H5b-ew-gwh">
|
||||
<rect key="frame" x="16" y="13" width="286" height="18"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="0Ak-Ke-Wlv" secondAttribute="trailing" constant="8" id="4hG-pb-ru5"/>
|
||||
<constraint firstItem="0Ak-Ke-Wlv" firstAttribute="leading" secondItem="H5b-ew-gwh" secondAttribute="trailing" constant="16" id="5bS-pv-hbg"/>
|
||||
<constraint firstItem="H5b-ew-gwh" firstAttribute="centerY" secondItem="ml2-J1-nDU" secondAttribute="centerY" id="Ckc-a6-AMH"/>
|
||||
<constraint firstItem="0Ak-Ke-Wlv" firstAttribute="centerY" secondItem="ml2-J1-nDU" secondAttribute="centerY" id="YAL-9y-gl0"/>
|
||||
<constraint firstItem="H5b-ew-gwh" firstAttribute="leading" secondItem="ml2-J1-nDU" secondAttribute="leading" constant="16" id="mTZ-gu-DkF"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="ft3-kN-Z7Q">
|
||||
<rect key="frame" x="0.0" y="132" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ft3-kN-Z7Q" id="g4F-5B-wgB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="xhG-fe-wIN">
|
||||
<rect key="frame" x="318" y="6" width="51" height="31"/>
|
||||
<connections>
|
||||
<action selector="onTwitterSwitch:" destination="xCa-sh-OsW" eventType="valueChanged" id="Piq-By-Fb6"/>
|
||||
</connections>
|
||||
</switch>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sign in with Twitter" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QBS-pv-6R0">
|
||||
<rect key="frame" x="16" y="13" width="286" height="18"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="QBS-pv-6R0" firstAttribute="leading" secondItem="g4F-5B-wgB" secondAttribute="leading" constant="16" id="8jI-tr-i7V"/>
|
||||
<constraint firstAttribute="trailing" secondItem="xhG-fe-wIN" secondAttribute="trailing" constant="8" id="GOH-PE-vR0"/>
|
||||
<constraint firstItem="xhG-fe-wIN" firstAttribute="leading" secondItem="QBS-pv-6R0" secondAttribute="trailing" constant="16" id="Jdr-cs-I6Z"/>
|
||||
<constraint firstItem="xhG-fe-wIN" firstAttribute="centerY" secondItem="g4F-5B-wgB" secondAttribute="centerY" id="XAk-Pn-ygM"/>
|
||||
<constraint firstItem="QBS-pv-6R0" firstAttribute="centerY" secondItem="g4F-5B-wgB" secondAttribute="centerY" id="c0K-cX-Rkj"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
</cells>
|
||||
</tableViewSection>
|
||||
</sections>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="xCa-sh-OsW" id="TCX-TN-0jL"/>
|
||||
<outlet property="delegate" destination="xCa-sh-OsW" id="e5v-TT-1YZ"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<connections>
|
||||
<outlet property="facebookSwitch" destination="gEH-Ew-hPh" id="NZz-hL-5TX"/>
|
||||
<outlet property="googleSwitch" destination="1xw-uv-s3b" id="2Y0-Io-jlc"/>
|
||||
<outlet property="microsoftSwitch" destination="0Ak-Ke-Wlv" id="Zxn-Zx-oOV"/>
|
||||
<outlet property="twitterSwitch" destination="xhG-fe-wIN" id="IQy-51-AUl"/>
|
||||
</connections>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="r1G-jd-wHf" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="381.60000000000002" y="-687.7061469265368"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
|
@ -1,27 +0,0 @@
|
|||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
struct LinkedAccountsConfigurator {
|
||||
let viewController: LinkedAccountsViewController
|
||||
|
||||
init() {
|
||||
viewController = StoryboardScene.LinkedAccounts.linkedAccountsViewController.instantiate()
|
||||
}
|
||||
|
||||
func configure(sessionToken: String) {
|
||||
let presenter = LinkedAccountsPresenter()
|
||||
|
||||
let usersService = UserService(imagesService: ImagesService())
|
||||
let authService = AuthService(apiProvider: AuthAPIProvider())
|
||||
presenter.interactor = LinkedAccountsInteractor(usersService: usersService,
|
||||
authService: authService,
|
||||
sessionToken: sessionToken)
|
||||
presenter.view = viewController
|
||||
|
||||
viewController.output = presenter
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
final class LinkedAccountsInteractor: LinkedAccountsInteractorInput {
|
||||
|
||||
private let usersService: UserServiceType
|
||||
private let authService: AuthService
|
||||
private let sessionToken: String
|
||||
|
||||
init(usersService: UserServiceType, authService: AuthService, sessionToken: String) {
|
||||
self.usersService = usersService
|
||||
self.authService = authService
|
||||
self.sessionToken = sessionToken
|
||||
}
|
||||
|
||||
func getLinkedAccounts(completion: @escaping (Result<[LinkedAccountView]>) -> Void) {
|
||||
usersService.getLinkedAccounts(completion: completion)
|
||||
}
|
||||
|
||||
func login(with provider: AuthProvider,
|
||||
from viewController: UIViewController?,
|
||||
completion: @escaping (Result<Authorization>) -> Void) {
|
||||
|
||||
authService.login(with: provider, from: viewController) { result in
|
||||
completion(result.map { $0.credentials.authorization })
|
||||
}
|
||||
}
|
||||
|
||||
func linkAccount(authorization: Authorization, completion: @escaping (Result<Void>) -> Void) {
|
||||
usersService.linkAccount(authorization: authorization, sessionToken: sessionToken, completion: completion)
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
protocol LinkedAccountsInteractorInput: class {
|
||||
func getLinkedAccounts(completion: @escaping (Result<[LinkedAccountView]>) -> Void)
|
||||
|
||||
func login(with provider: AuthProvider,
|
||||
from viewController: UIViewController?,
|
||||
completion: @escaping (Result<Authorization>) -> Void)
|
||||
|
||||
func linkAccount(authorization: Authorization, completion: @escaping (Result<Void>) -> Void)
|
||||
}
|
|
@ -1,92 +0,0 @@
|
|||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
final class LinkedAccountsPresenter {
|
||||
|
||||
weak var view: LinkedAccountsViewInput!
|
||||
var interactor: LinkedAccountsInteractorInput!
|
||||
}
|
||||
|
||||
extension LinkedAccountsPresenter: LinkedAccountsViewOutput {
|
||||
|
||||
func viewIsReady() {
|
||||
view.setupInitialState()
|
||||
loadLinkedAccounts()
|
||||
}
|
||||
|
||||
func loadLinkedAccounts() {
|
||||
view.setSwitchesEnabled(false)
|
||||
|
||||
interactor.getLinkedAccounts { [weak self] accounts in
|
||||
self?.view.setSwitchesEnabled(true)
|
||||
|
||||
if let accounts = accounts.value {
|
||||
for account in accounts {
|
||||
self?.setLinkedAccount(account)
|
||||
}
|
||||
} else {
|
||||
self?.view.showError(accounts.error ?? APIError.unknown)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func setLinkedAccount(_ linkedAccount: LinkedAccountView) {
|
||||
if let authProvider = linkedAccount.identityProvider?.authProvider {
|
||||
view.setSwitchOn(true, for: authProvider)
|
||||
}
|
||||
}
|
||||
|
||||
func onFacebookSwitchValueChanged(_ isOn: Bool) {
|
||||
processSwitchValueChanged(isOn, provider: .facebook)
|
||||
}
|
||||
|
||||
func onGoogleSwitchValueChanged(_ isOn: Bool) {
|
||||
processSwitchValueChanged(isOn, provider: .google)
|
||||
}
|
||||
|
||||
func onMicrosoftSwitchValueChanged(_ isOn: Bool) {
|
||||
processSwitchValueChanged(isOn, provider: .microsoft)
|
||||
}
|
||||
|
||||
func onTwitterSwitchValueChanged(_ isOn: Bool) {
|
||||
processSwitchValueChanged(isOn, provider: .twitter)
|
||||
}
|
||||
|
||||
private func processSwitchValueChanged(_ isOn: Bool, provider: AuthProvider) {
|
||||
if isOn {
|
||||
login(with: provider)
|
||||
} else {
|
||||
// delete linked account
|
||||
}
|
||||
}
|
||||
|
||||
private func login(with provider: AuthProvider) {
|
||||
view.setSwitchesEnabled(false)
|
||||
|
||||
interactor.login(with: provider, from: view as? UIViewController) { [weak self] result in
|
||||
guard let authorization = result.value else {
|
||||
self?.view.showError(result.error ?? APIError.unknown)
|
||||
return
|
||||
}
|
||||
|
||||
self?.interactor.linkAccount(authorization: authorization) { result in
|
||||
self?.view.setSwitchesEnabled(true)
|
||||
|
||||
if let error = result.error {
|
||||
self?.view.setSwitchOn(false, for: provider)
|
||||
self?.view.showError(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class LinkedAccountsViewController: UITableViewController {
|
||||
|
||||
var output: LinkedAccountsViewOutput!
|
||||
|
||||
@IBOutlet fileprivate weak var facebookSwitch: UISwitch!
|
||||
@IBOutlet fileprivate weak var googleSwitch: UISwitch!
|
||||
@IBOutlet fileprivate weak var microsoftSwitch: UISwitch!
|
||||
@IBOutlet fileprivate weak var twitterSwitch: UISwitch!
|
||||
|
||||
fileprivate var switches: [UISwitch] {
|
||||
return [facebookSwitch, googleSwitch, microsoftSwitch, twitterSwitch]
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
output.viewIsReady()
|
||||
}
|
||||
|
||||
@IBAction func onFacebookSwitch(_ sender: UISwitch) {
|
||||
output.onFacebookSwitchValueChanged(sender.isOn)
|
||||
}
|
||||
|
||||
@IBAction func onGoogleSwitch(_ sender: UISwitch) {
|
||||
output.onGoogleSwitchValueChanged(sender.isOn)
|
||||
}
|
||||
|
||||
@IBAction func onMicrosoftSwitch(_ sender: UISwitch) {
|
||||
output.onMicrosoftSwitchValueChanged(sender.isOn)
|
||||
}
|
||||
|
||||
@IBAction func onTwitterSwitch(_ sender: UISwitch) {
|
||||
output.onTwitterSwitchValueChanged(sender.isOn)
|
||||
}
|
||||
}
|
||||
|
||||
extension LinkedAccountsViewController: LinkedAccountsViewInput {
|
||||
|
||||
func setupInitialState() {
|
||||
tableView.tableFooterView = UIView()
|
||||
}
|
||||
|
||||
func setSwitchOn(_ isOn: Bool, for provider: AuthProvider) {
|
||||
switcher(for: provider)?.setOn(isOn, animated: true)
|
||||
}
|
||||
|
||||
func setSwitchEnabled(_ isEnabled: Bool, for provider: AuthProvider) {
|
||||
switcher(for: .google)?.isEnabled = isEnabled
|
||||
}
|
||||
|
||||
func showError(_ error: Error) {
|
||||
showErrorAlert(error)
|
||||
}
|
||||
|
||||
func setSwitchesEnabled(_ isEnabled: Bool) {
|
||||
for sw in switches {
|
||||
sw.isEnabled = isEnabled
|
||||
}
|
||||
}
|
||||
|
||||
private func switcher(for provider: AuthProvider) -> UISwitch? {
|
||||
switch provider {
|
||||
case .facebook:
|
||||
return facebookSwitch
|
||||
case .google:
|
||||
return googleSwitch
|
||||
case .microsoft:
|
||||
return microsoftSwitch
|
||||
case .twitter:
|
||||
return twitterSwitch
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
protocol LinkedAccountsViewInput: class {
|
||||
func setupInitialState()
|
||||
|
||||
func setSwitchOn(_ isOn: Bool, for provider: AuthProvider)
|
||||
|
||||
func setSwitchEnabled(_ isEnabled: Bool, for provider: AuthProvider)
|
||||
|
||||
func showError(_ error: Error)
|
||||
|
||||
func setSwitchesEnabled(_ isEnabled: Bool)
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
protocol LinkedAccountsViewOutput: class {
|
||||
func viewIsReady()
|
||||
|
||||
func onFacebookSwitchValueChanged(_ isOn: Bool)
|
||||
|
||||
func onGoogleSwitchValueChanged(_ isOn: Bool)
|
||||
|
||||
func onMicrosoftSwitchValueChanged(_ isOn: Bool)
|
||||
|
||||
func onTwitterSwitchValueChanged(_ isOn: Bool)
|
||||
}
|
|
@ -7,6 +7,7 @@ import Foundation
|
|||
import FBSDKCoreKit
|
||||
import TwitterKit
|
||||
import GoogleSignIn
|
||||
import HockeySDK
|
||||
|
||||
protocol ThirdPartyConfiguratorType {
|
||||
func setup(application: UIApplication, launchOptions: [AnyHashable: Any])
|
||||
|
@ -32,6 +33,16 @@ struct ThirdPartyConfigurator: ThirdPartyConfiguratorType {
|
|||
private func setupGoogle() {
|
||||
GIDSignIn.sharedInstance().clientID = "348861152334-5hdrnh6qal3trt8m2ukv26due7fn20k0.apps.googleusercontent.com"
|
||||
}
|
||||
|
||||
private func setupHockeyApp() {
|
||||
BITHockeyManager.shared().configure(withIdentifier: "46cc5ba83a8043b9a4b67cc0f9c6c9a2")
|
||||
BITHockeyManager.shared().start()
|
||||
BITHockeyManager.shared().authenticator.authenticateInstallation()
|
||||
|
||||
if TARGET_OS_SIMULATOR != 0 {
|
||||
BITHockeyManager.shared().isUpdateManagerDisabled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ThirdPartyConfigurator {
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"size" : "1024x1024",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
21
Resources_bundle/Images.xcassets/External/icon_designObserver.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_designObserver@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/External/icon_designObserver.imageset/icon_designObserver@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 19 KiB |
21
Resources_bundle/Images.xcassets/External/icon_fb.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_fb@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/External/icon_fb.imageset/icon_fb@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 651 B |
21
Resources_bundle/Images.xcassets/External/icon_freshPaint.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_freshPaint@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/External/icon_freshPaint.imageset/icon_freshPaint@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 19 KiB |
21
Resources_bundle/Images.xcassets/External/icon_gplus.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_gplus@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/External/icon_gplus.imageset/icon_gplus@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 1.2 KiB |
21
Resources_bundle/Images.xcassets/External/icon_msft.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_msft@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/External/icon_msft.imageset/icon_msft@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 405 B |
21
Resources_bundle/Images.xcassets/External/icon_socialPlus_v2.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_socialPlus_v2@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/External/icon_socialPlus_v2.imageset/icon_socialPlus_v2@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 18 KiB |
21
Resources_bundle/Images.xcassets/External/icon_twitter.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_twitter@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/External/icon_twitter.imageset/icon_twitter@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 1.1 KiB |
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
21
Resources_bundle/Images.xcassets/Placeholders/placeholder_post_image.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "placeholder_post_image.jpg",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/Placeholders/placeholder_post_image.imageset/placeholder_post_image.jpg
поставляемый
Normal file
После Ширина: | Высота: | Размер: 196 KiB |
21
Resources_bundle/Images.xcassets/Placeholders/placeholder_post_image2.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "test.jpg",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/Placeholders/placeholder_post_image2.imageset/test.jpg
поставляемый
Normal file
После Ширина: | Высота: | Размер: 14 KiB |
21
Resources_bundle/Images.xcassets/Placeholders/placeholder_post_user_1.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "placeholder_user_1.jpg",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/Placeholders/placeholder_post_user_1.imageset/placeholder_user_1.jpg
поставляемый
Normal file
После Ширина: | Высота: | Размер: 9.3 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_accept.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/es_accept.imageset/es_accept.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 1.3 KiB |
21
Resources_bundle/Images.xcassets/es_decor_comment.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_decor_comment.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/es_decor_comment.imageset/es_decor_comment.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 4.1 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_decor_follow.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/es_decor_follow.imageset/es_decor_follow.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 4.2 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_decor_like.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/es_decor_like.imageset/es_decor_like.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 4.0 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_reject.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/es_reject.imageset/es_reject.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 731 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_accept@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_accept.imageset/icon_accept@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 18 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_activity@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_activity.imageset/icon_activity@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 584 B |
21
Resources_bundle/Images.xcassets/icon_activity_active.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_navigation_activity_highlight.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_activity_active.imageset/es_navigation_activity_highlight.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 610 B |
21
Resources_bundle/Images.xcassets/icon_activity_commented.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_activity_commented@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_activity_commented.imageset/icon_activity_commented@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 941 B |
21
Resources_bundle/Images.xcassets/icon_activity_followed.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_activity_followed@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_activity_followed.imageset/icon_activity_followed@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 1.0 KiB |
21
Resources_bundle/Images.xcassets/icon_activity_liked.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_activity_liked@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_activity_liked.imageset/icon_activity_liked@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 943 B |
21
Resources_bundle/Images.xcassets/icon_arrow_green.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_arrow_green@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_arrow_green.imageset/icon_arrow_green@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 365 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_back@2x.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_back.imageset/icon_back@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 18 KiB |
21
Resources_bundle/Images.xcassets/icon_checkmark_blue.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_checkmark_blue@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_checkmark_blue.imageset/icon_checkmark_blue@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 403 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_ic_comment.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_comment.imageset/es_ic_comment.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 1.0 KiB |
21
Resources_bundle/Images.xcassets/icon_comment_active.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_ic_comment_green.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_comment_active.imageset/es_ic_comment_green.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 585 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_disclosure@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_disclosure.imageset/icon_disclosure@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 289 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_dots@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_dots.imageset/icon_dots@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 18 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_edit@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_edit.imageset/icon_edit@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 18 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_gallery@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_gallery.imageset/icon_gallery@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 229 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_gear@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_gear.imageset/icon_gear@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 18 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_hamburger@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_hamburger.imageset/icon_hamburger@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 235 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_home@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_home.imageset/icon_home@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 375 B |
21
Resources_bundle/Images.xcassets/icon_home_active.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_navigation_home_highlight.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_home_active.imageset/es_navigation_home_highlight.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 593 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_ic_like_normal.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_liked.imageset/es_ic_like_normal.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 1.0 KiB |
21
Resources_bundle/Images.xcassets/icon_liked_active.imageset/Contents.json
поставляемый
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_ic_like_green.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_liked_active.imageset/es_ic_like_green.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 579 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_list@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_list.imageset/icon_list@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 310 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_logout@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_logout.imageset/icon_logout@2x.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 412 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_ic_pin_normal.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_pin.imageset/es_ic_pin_normal.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 1.1 KiB |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "es_navigation_pins_highlight.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Двоичные данные
Resources_bundle/Images.xcassets/icon_pin_active.imageset/es_navigation_pins_highlight.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 945 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "icon_pins@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|