-
Notifications
You must be signed in to change notification settings - Fork 730
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactor FragmentProtocols to remove HasFragments (#2071)
* Fix Broken Package and remove old sources * Remove ResponseObject and Change ResponseDict -> DataDict * Refactor FragmentProtocols in ApolloAPI
- Loading branch information
1 parent
27306a3
commit e6b761d
Showing
10 changed files
with
44 additions
and
492 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,33 @@ | ||
// MARK: - Fragment | ||
|
||
/// A protocol representing a fragment that a `ResponseObject` object may be converted to. | ||
/// A protocol representing a fragment that a `SelectionSet` object may be converted to. | ||
/// | ||
/// A `ResponseObject` that conforms to `HasFragments` can be converted to | ||
/// any `Fragment` included in it's `Fragments` object via its `fragments` property. | ||
/// | ||
/// - SeeAlso: `HasFragments`, `ToFragments` | ||
/// A `SelectionSet` can be converted to any `Fragment` included in it's `Fragments` object via | ||
/// its `fragments` property. | ||
public protocol Fragment: AnySelectionSet { | ||
static var fragmentDefinition: String { get } | ||
} | ||
|
||
// MARK: - HasFragments | ||
|
||
/// A protocol that a `ResponseObject` that contains fragments should conform to. | ||
public protocol HasFragments: AnySelectionSet { | ||
public protocol FragmentContainer { | ||
var data: DataDict { get } | ||
|
||
/// A type representing all of the fragments contained on the `ResponseObject`. | ||
associatedtype Fragments: ResponseObject | ||
init(data: DataDict) | ||
} | ||
|
||
public extension HasFragments { | ||
/// A `FieldData` object that contains accessors for all of the fragments | ||
/// the object can be converted to. | ||
var fragments: Fragments { Fragments(data: data) } | ||
public extension FragmentContainer { | ||
|
||
/// Converts a `SelectionSet` to a `Fragment` given a generic fragment type. | ||
/// | ||
/// - Warning: This function is not supported for use outside of generated call sites. | ||
/// Generated call sites are guaranteed by the GraphQL compiler to be safe. | ||
/// Unsupported usage may result in unintended consequences including crashes. | ||
#warning("TODO: Audit all _ prefixed things to see if they should be available using ApolloExtension.") | ||
func _toFragment<T: Fragment>() -> T { | ||
return T.init(data: data) | ||
} | ||
} | ||
|
||
/// A `FragmentContainer` to be used by `SelectionSet`s that have no fragments. | ||
/// This is the default `FragmentContainer` for a `SelectionSet` that does not specify a | ||
/// `Fragments` type. | ||
public enum NoFragments {} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.