shipthis
Version:
ShipThis manages building and uploading your Godot games to the App Store and Google Play.
65 lines (62 loc) • 2.14 kB
JavaScript
import { useQuery } from '@tanstack/react-query';
import { e as BundleId, q as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, r as CapabilityType } from './index-BwnzoldS.js';
async function getBundleIdCapabilities(bundleId) {
const current = await bundleId.getBundleIdCapabilitiesAsync();
const existing = [];
for (const capability of current) {
const capabilityType = Object.values(CapabilityType).find((c) => capability.isType(c));
if (capabilityType) {
existing.push(capabilityType);
}
}
return existing;
}
const fetchBundleId = async ({ ctx, iosBundleId }) => {
const empty = {
bundleId: null,
bundleIdSummary: null,
capabilities: null,
capabilitiesTable: null,
projectCapabilities: null,
shouldSyncCapabilities: null
};
if (!iosBundleId) return empty;
const bundleId = await BundleId.findAsync(ctx, {
identifier: iosBundleId
});
if (!bundleId) return empty;
const bundleIdCapabilities = await getBundleIdCapabilities(bundleId);
const projectCapabilities = getGodotProjectCapabilities(Platform.IOS);
const capabilitiesTable = GODOT_CAPABILITIES.map((gc) => {
const isEnabledInBundle = bundleIdCapabilities.includes(gc.type);
const isEnabledInProject = projectCapabilities.includes(gc.type);
const isCorrectlyConfigured = isEnabledInBundle === isEnabledInProject;
return {
isCorrectlyConfigured,
isEnabledInBundle,
isEnabledInProject,
name: gc.name
};
});
return {
bundleId,
bundleIdSummary: {
id: bundleId.id,
identifier: bundleId.attributes.identifier,
name: bundleId.attributes.name,
platform: bundleId.attributes.platform
},
capabilities: bundleIdCapabilities,
capabilitiesTable,
projectCapabilities,
shouldSyncCapabilities: !capabilitiesTable.every((c) => c.isCorrectlyConfigured)
};
};
const useAppleBundleId = (props) => {
const queryResult = useQuery({
queryFn: () => fetchBundleId(props),
queryKey: ["appleBundleId", props.iosBundleId]
});
return queryResult;
};
export { fetchBundleId as f, useAppleBundleId as u };