Skip to content

feat: ParseObject's now conform to Identifiable #254

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Oct 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ coverage:
status:
patch:
default:
target: auto
target: 0
changes: false
project:
default:
Expand Down
21 changes: 21 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,13 @@ jobs:
run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -workspace Parse.xcworkspace -scheme ParseSwift\ \(iOS\) -destination platform\=iOS\ Simulator,name\=iPhone\ 12\ Pro\ Max -derivedDataPath DerivedData test | xcpretty
env:
DEVELOPER_DIR: ${{ env.CI_XCODE_13 }}
- name: Prepare codecov
run: |
XCTEST=$(find DerivedData -type f -name 'ParseSwiftTests')
PROFDATA=$(find DerivedData -type f -name '*.profdata')
xcrun llvm-cov export "${XCTEST}" -format="lcov" -instr-profile "${PROFDATA}" > info.lcov
env:
DEVELOPER_DIR: ${{ env.CI_XCODE_13 }}
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v2
with:
Expand All @@ -43,6 +50,13 @@ jobs:
run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -workspace Parse.xcworkspace -scheme ParseSwift\ \(macOS\) -destination platform\=macOS -derivedDataPath DerivedData test | xcpretty
env:
DEVELOPER_DIR: ${{ env.CI_XCODE_13 }}
- name: Prepare codecov
run: |
XCTEST=$(find DerivedData -type f -name 'ParseSwiftTestsmacOS')
PROFDATA=$(find DerivedData -type f -name '*.profdata')
xcrun llvm-cov export "${XCTEST}" -format="lcov" -instr-profile "${PROFDATA}" > info.lcov
env:
DEVELOPER_DIR: ${{ env.CI_XCODE_13 }}
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v2
with:
Expand All @@ -58,6 +72,13 @@ jobs:
run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -workspace Parse.xcworkspace -scheme ParseSwift\ \(tvOS\) -destination platform\=tvOS\ Simulator,name\=Apple\ TV -derivedDataPath DerivedData test | xcpretty
env:
DEVELOPER_DIR: ${{ env.CI_XCODE_13 }}
- name: Prepare codecov
run: |
XCTEST=$(find DerivedData -type f -name 'ParseSwiftTeststvOS')
PROFDATA=$(find DerivedData -type f -name '*.profdata')
xcrun llvm-cov export "${XCTEST}" -format="lcov" -instr-profile "${PROFDATA}" > info.lcov
env:
DEVELOPER_DIR: ${{ env.CI_XCODE_13 }}
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v2
with:
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ jobs:
run: ./Scripts/update_build
env:
BUILD_VERSION: ${{ env.TAG }}
- name: CocoaPods
run: set -o pipefail && env NSUnbufferedIO=YES pod lib lint --allow-warnings --verbose
env:
DEVELOPER_DIR: ${{ env.CI_XCODE_13 }}
- name: Deploy CocoaPods
run: set -o pipefail && env NSUnbufferedIO=YES pod trunk push ParseSwift.podspec --allow-warnings --verbose
env:
Expand Down
12 changes: 11 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
# Parse-Swift Changelog

### main
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/1.11.0...main)

[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/2.0.0...main)
* _Contributing to this repo? Add info about your change here to be included in the next release_

### 2.0.0
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/1.11.0...2.0.0)

__New features__
- Added option to delete Parse items from Keychain when the app is running for the first time ([#254](https://github.com/parse-community/Parse-Swift/pull/254)), thanks to [Corey Baker](https://github.com/cbaker6).

__Improvements__
- (Breaking Change) ParseObject's now conform to Identifiable and can be used directly with SwiftUI without additonal properties needed. Drops support for iOS 12, tvOS 12, watchOS 5, and macOS 10.13/14 ([#254](https://github.com/parse-community/Parse-Swift/pull/254)), thanks to [Corey Baker](https://github.com/cbaker6).

### 1.11.0
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/1.10.4...1.11.0)

Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import PackageDescription

let package = Package(
name: "ParseSwift",
platforms: [.iOS(.v12), .macOS(.v10_13), .tvOS(.v12), .watchOS(.v5)],
platforms: [.iOS(.v13), .macOS(.v10_15), .tvOS(.v13), .watchOS(.v6)],
products: [
.library(
name: "ParseSwift",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,7 @@ PlaygroundPage.current.needsIndefiniteExecution = true
initializeParse()

//: Create your own value typed ParseObject.
struct GameScore: ParseObject, Identifiable {

//: Conform to Identifiable for iOS13+
var id: String { // swiftlint:disable:this identifier_name
guard let objectId = self.objectId else {
return UUID().uuidString
}
return objectId
}
struct GameScore: ParseObject {

//: These are required for any Object.
var objectId: String?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,7 @@ PlaygroundPage.current.needsIndefiniteExecution = true
initializeParse()

//: Create your own value typed ParseObject.
struct GameScore: ParseObject, Identifiable {

//: Conform to Identifiable for iOS13+
var id: String { // swiftlint:disable:this identifier_name
guard let objectId = self.objectId else {
return UUID().uuidString
}
return objectId
}
struct GameScore: ParseObject {

//: These are required for any Object.
var objectId: String?
Expand Down
8 changes: 4 additions & 4 deletions ParseSwift.podtemplate
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ Pod::Spec.new do |s|
:git => "#{s.homepage}.git",
:tag => "#{s.version}",
}
s.ios.deployment_target = "12.0"
s.osx.deployment_target = "10.13"
s.tvos.deployment_target = "12.0"
s.watchos.deployment_target = "5.0"
s.ios.deployment_target = "13.0"
s.osx.deployment_target = "10.15"
s.tvos.deployment_target = "13.0"
s.watchos.deployment_target = "6.0"
s.swift_versions = ['5.1', '5.2', '5.3', '5.4', '5.5']
s.source_files = "Sources/ParseSwift/**/*.swift"
s.license = {
Expand Down
44 changes: 17 additions & 27 deletions ParseSwift.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -293,10 +293,6 @@
705D950925BE4C08003EF6F8 /* SubscriptionCallback.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705D950725BE4C08003EF6F8 /* SubscriptionCallback.swift */; };
705D950A25BE4C08003EF6F8 /* SubscriptionCallback.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705D950725BE4C08003EF6F8 /* SubscriptionCallback.swift */; };
705D950B25BE4C08003EF6F8 /* SubscriptionCallback.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705D950725BE4C08003EF6F8 /* SubscriptionCallback.swift */; };
70647E8E259E3375004C1004 /* LocallyIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70647E8D259E3375004C1004 /* LocallyIdentifiable.swift */; };
70647E8F259E3375004C1004 /* LocallyIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70647E8D259E3375004C1004 /* LocallyIdentifiable.swift */; };
70647E90259E3375004C1004 /* LocallyIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70647E8D259E3375004C1004 /* LocallyIdentifiable.swift */; };
70647E91259E3375004C1004 /* LocallyIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70647E8D259E3375004C1004 /* LocallyIdentifiable.swift */; };
70647E9C259E3A9A004C1004 /* ParseType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70647E9B259E3A9A004C1004 /* ParseType.swift */; };
70647E9D259E3A9A004C1004 /* ParseType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70647E9B259E3A9A004C1004 /* ParseType.swift */; };
70647E9E259E3A9A004C1004 /* ParseType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70647E9B259E3A9A004C1004 /* ParseType.swift */; };
Expand Down Expand Up @@ -867,7 +863,6 @@
705A99F8259807F900B3547F /* ParseFileManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseFileManagerTests.swift; sourceTree = "<group>"; };
705A9A2E25991C1400B3547F /* Fileable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fileable.swift; sourceTree = "<group>"; };
705D950725BE4C08003EF6F8 /* SubscriptionCallback.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionCallback.swift; sourceTree = "<group>"; };
70647E8D259E3375004C1004 /* LocallyIdentifiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocallyIdentifiable.swift; sourceTree = "<group>"; };
70647E9B259E3A9A004C1004 /* ParseType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseType.swift; sourceTree = "<group>"; };
70732C592606CCAD000CAB81 /* ParseObjectCustomObjectIdTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseObjectCustomObjectIdTests.swift; sourceTree = "<group>"; };
707A3BF025B0A4F0000D215C /* ParseAuthentication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseAuthentication.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1291,7 +1286,6 @@
70BC988F252A5B5C00FF3074 /* Objectable.swift */,
F97B45C824D9C6F200F4A88B /* Queryable.swift */,
F97B45C724D9C6F200F4A88B /* Savable.swift */,
70647E8D259E3375004C1004 /* LocallyIdentifiable.swift */,
70647E9B259E3A9A004C1004 /* ParseType.swift */,
91BB8FCE2690BA70005A6BA5 /* QueryObservable.swift */,
91F346BD269B77B5005727B6 /* CloudObservable.swift */,
Expand Down Expand Up @@ -1972,7 +1966,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if which swiftlint >/dev/null; then\n swiftlint --fix --strict\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n";
shellScript = "if which swiftlint >/dev/null; then\n swiftlint --fix && swiftlint --strict\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n";
};
918CED61268A23A700CFDC83 /* SwiftLint */ = {
isa = PBXShellScriptBuildPhase;
Expand Down Expand Up @@ -2074,7 +2068,6 @@
705A9A2F25991C1400B3547F /* Fileable.swift in Sources */,
89899D342603CF36002E2043 /* ParseTwitter.swift in Sources */,
F97B464A24D9C78B00F4A88B /* Delete.swift in Sources */,
70647E8E259E3375004C1004 /* LocallyIdentifiable.swift in Sources */,
F97B460624D9C6F200F4A88B /* ParseUser.swift in Sources */,
700396F825A394AE0052CB31 /* ParseLiveQueryDelegate.swift in Sources */,
F97B465A24D9C78C00F4A88B /* Increment.swift in Sources */,
Expand Down Expand Up @@ -2284,7 +2277,6 @@
705A9A3025991C1400B3547F /* Fileable.swift in Sources */,
89899D332603CF36002E2043 /* ParseTwitter.swift in Sources */,
F97B464B24D9C78B00F4A88B /* Delete.swift in Sources */,
70647E8F259E3375004C1004 /* LocallyIdentifiable.swift in Sources */,
F97B460724D9C6F200F4A88B /* ParseUser.swift in Sources */,
700396F925A394AE0052CB31 /* ParseLiveQueryDelegate.swift in Sources */,
F97B465B24D9C78C00F4A88B /* Increment.swift in Sources */,
Expand Down Expand Up @@ -2589,7 +2581,6 @@
705A9A3225991C1400B3547F /* Fileable.swift in Sources */,
89899D282603CF35002E2043 /* ParseTwitter.swift in Sources */,
F97B45F524D9C6F200F4A88B /* Pointer.swift in Sources */,
70647E91259E3375004C1004 /* LocallyIdentifiable.swift in Sources */,
F97B460924D9C6F200F4A88B /* ParseUser.swift in Sources */,
700396FB25A394AE0052CB31 /* ParseLiveQueryDelegate.swift in Sources */,
F97B463A24D9C74400F4A88B /* Responses.swift in Sources */,
Expand Down Expand Up @@ -2713,7 +2704,6 @@
705A9A3125991C1400B3547F /* Fileable.swift in Sources */,
89899D322603CF35002E2043 /* ParseTwitter.swift in Sources */,
F97B45F424D9C6F200F4A88B /* Pointer.swift in Sources */,
70647E90259E3375004C1004 /* LocallyIdentifiable.swift in Sources */,
F97B460824D9C6F200F4A88B /* ParseUser.swift in Sources */,
700396FA25A394AE0052CB31 /* ParseLiveQueryDelegate.swift in Sources */,
F97B463924D9C74400F4A88B /* Responses.swift in Sources */,
Expand Down Expand Up @@ -2857,7 +2847,7 @@
CODE_SIGN_STYLE = Automatic;
GCC_GENERATE_TEST_COVERAGE_FILES = YES;
INFOPLIST_FILE = TestHost/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.parse.TestHost;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand All @@ -2873,7 +2863,7 @@
CODE_SIGN_STYLE = Automatic;
GCC_GENERATE_TEST_COVERAGE_FILES = YES;
INFOPLIST_FILE = TestHost/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.parse.TestHost;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down Expand Up @@ -2934,14 +2924,14 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.2;
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
Expand Down Expand Up @@ -2993,12 +2983,12 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 4.2;
SWIFT_VERSION = 5.0;
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
Expand All @@ -3016,7 +3006,7 @@
GCC_GENERATE_TEST_COVERAGE_FILES = YES;
INFOPLIST_FILE = "ParseSwift-iOS/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MARKETING_VERSION = 1.8.3;
PRODUCT_BUNDLE_IDENTIFIER = com.parse.ParseSwift;
Expand All @@ -3041,7 +3031,7 @@
GCC_GENERATE_TEST_COVERAGE_FILES = YES;
INFOPLIST_FILE = "ParseSwift-iOS/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MARKETING_VERSION = 1.8.3;
PRODUCT_BUNDLE_IDENTIFIER = com.parse.ParseSwift;
Expand Down Expand Up @@ -3111,7 +3101,7 @@
INFOPLIST_FILE = "ParseSwift-macOS/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.13;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.8.3;
PRODUCT_BUNDLE_IDENTIFIER = com.parse.ParseSwift;
PRODUCT_NAME = ParseSwift;
Expand All @@ -3138,7 +3128,7 @@
INFOPLIST_FILE = "ParseSwift-macOS/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.13;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.8.3;
PRODUCT_BUNDLE_IDENTIFIER = com.parse.ParseSwift;
PRODUCT_NAME = ParseSwift;
Expand Down Expand Up @@ -3168,7 +3158,7 @@
SDKROOT = appletvos;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 12.0;
TVOS_DEPLOYMENT_TARGET = 13.0;
};
name = Debug;
};
Expand All @@ -3188,7 +3178,7 @@
SDKROOT = appletvos;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 12.0;
TVOS_DEPLOYMENT_TARGET = 13.0;
};
name = Release;
};
Expand Down Expand Up @@ -3304,7 +3294,7 @@
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 4;
TVOS_DEPLOYMENT_TARGET = 12.0;
WATCHOS_DEPLOYMENT_TARGET = 5.0;
WATCHOS_DEPLOYMENT_TARGET = 6.0;
};
name = Debug;
};
Expand Down Expand Up @@ -3333,7 +3323,7 @@
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 4;
TVOS_DEPLOYMENT_TARGET = 12.0;
WATCHOS_DEPLOYMENT_TARGET = 5.0;
WATCHOS_DEPLOYMENT_TARGET = 6.0;
};
name = Release;
};
Expand Down Expand Up @@ -3361,7 +3351,7 @@
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 12.0;
TVOS_DEPLOYMENT_TARGET = 13.0;
WATCHOS_DEPLOYMENT_TARGET = 5.0;
};
name = Debug;
Expand Down Expand Up @@ -3389,7 +3379,7 @@
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 12.0;
TVOS_DEPLOYMENT_TARGET = 13.0;
WATCHOS_DEPLOYMENT_TARGET = 5.0;
};
name = Release;
Expand Down
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@ Please checkout the [Swift Playground](https://github.com/parse-community/Parse-

## LiveQuery

**Requires: iOS 13.0+, macOS 10.15+, macCatalyst 13.0+, tvOS 13.0+, watchOS 6.0+**

`Query` is one of the key concepts on the Parse Platform. It allows you to retrieve `ParseObject`s by specifying some conditions, making it easy to build apps such as a dashboard, a todo list or even some strategy games. However, `Query` is based on a pull model, which is not suitable for apps that need real-time support.

Suppose you are building an app that allows multiple users to edit the same file at the same time. `Query` would not be an ideal tool since you can not know when to query from the server to get the updates.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import Foundation
import Combine

@available(macOS 10.15, iOS 13.0, macCatalyst 13.0, watchOS 6.0, tvOS 13.0, *)
public extension ParseApple {
// MARK: Login - Combine

Expand Down Expand Up @@ -48,7 +47,6 @@ public extension ParseApple {
}
}

@available(macOS 10.15, iOS 13.0, macCatalyst 13.0, watchOS 6.0, tvOS 13.0, *)
public extension ParseApple {
// MARK: Link - Combine

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import Foundation
import Combine

@available(macOS 10.15, iOS 13.0, macCatalyst 13.0, watchOS 6.0, tvOS 13.0, *)
public extension ParseFacebook {
// MARK: Login - Combine
/**
Expand Down Expand Up @@ -70,7 +69,6 @@ public extension ParseFacebook {
}
}

@available(macOS 10.15, iOS 13.0, macCatalyst 13.0, watchOS 6.0, tvOS 13.0, *)
public extension ParseFacebook {
// MARK: Link - Combine
/**
Expand Down
Loading