ssap_app/node_modules/expo-dev-launcher/ios/SwiftUI/GraphQL/Queries.swift

151 lines
3.6 KiB
Swift

// Copyright 2015-present 650 Industries. All rights reserved.
import Foundation
class Queries {
static func getUserProfile() async throws -> User {
let query = """
{
meUserActor {
id
appCount
profilePhoto
username
isExpoAdmin
accounts {
id
name
ownerUserActor {
username
fullName
profilePhoto
}
}
}
}
"""
let response: MeUserActorResponse = try await APIClient.shared.request(query)
return response.data.meUserActor
}
static func getBranches(
appId: String,
offset: Int,
limit: Int,
runtimeVersion: String,
platform: String
) async throws -> [Branch] {
let query = """
query getBranches($appId: String!, $offset: Int!, $limit: Int!, $runtimeVersion: String!, $platform: AppPlatform!) {
app {
byId(appId: $appId) {
updateBranches(offset: $offset, limit: $limit) {
id
name
compatibleUpdates: updates(offset: 0, limit: 1, filter: { runtimeVersions: [$runtimeVersion], platform: $platform }) {
id
}
}
}
}
}
"""
let variables: [String: Any] = [
"appId": appId,
"offset": offset,
"limit": limit,
"runtimeVersion": runtimeVersion,
"platform": platform
]
let response: BranchesResponse = try await APIClient.shared.request(query, variables: variables)
return response.data.app.byId.updateBranches
}
static func getChannels(appId: String) async throws -> [Channel] {
let query = """
query getUpdates($appId: String!) {
app {
byId(appId: $appId) {
updateChannels(offset: 0, limit: 10) {
name
updateBranches(offset: 0, limit: 10) {
name
}
}
}
}
}
"""
let variables: [String: Any] = [
"appId": appId
]
let response: ChannelResponse = try await APIClient.shared.request(query, variables: variables)
return response.data.app.byId.updateChannels.map { updateChannel in
Channel(
name: updateChannel.name,
branches: updateChannel.updateBranches.map { $0.name }
)
}
}
static func getUpdatesForBranch(
appId: String,
branchName: String,
page: Int,
pageSize: Int
) async throws -> (updates: [Update], page: Int) {
let offset = (page - 1) * pageSize
let platform = "IOS"
let query = """
query getUpdates(
$appId: String!
$branchName: String!
$offset: Int!
$limit: Int!
$platform: AppPlatform!
) {
app {
byId(appId: $appId) {
updateBranchByName(name: $branchName) {
updates(offset: $offset, limit: $limit, filter: { platform: $platform }) {
id
message
runtimeVersion
createdAt
manifestPermalink
}
}
}
}
}
"""
let variables: [String: Any] = [
"appId": appId,
"branchName": branchName,
"offset": offset,
"limit": pageSize,
"platform": platform
]
let response: UpdatesResponse = try await APIClient.shared.request(query, variables: variables)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let outputFormatter = DateFormatter()
outputFormatter.dateFormat = "MMMM d, yyyy, h:mma"
let updates = response.data.app.byId.updateBranchByName.updates
return (updates: updates, page: page)
}
}