@growsober/sdk 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -129,3 +129,41 @@ export declare function useRemoveCreatorAvailability(options?: Omit<UseMutationO
|
|
|
129
129
|
creatorId: string;
|
|
130
130
|
availabilityId: string;
|
|
131
131
|
}, unknown>;
|
|
132
|
+
export interface CreateCreatorRewardRequest {
|
|
133
|
+
badgeId: string;
|
|
134
|
+
title: string;
|
|
135
|
+
description: string;
|
|
136
|
+
redeemType: 'IN_PERSON' | 'ONLINE' | 'BOTH';
|
|
137
|
+
code?: string;
|
|
138
|
+
maxRedemptions?: number;
|
|
139
|
+
validUntil?: string;
|
|
140
|
+
}
|
|
141
|
+
export interface CreatorRewardResponse {
|
|
142
|
+
id: string;
|
|
143
|
+
creatorId: string;
|
|
144
|
+
badgeId: string;
|
|
145
|
+
title: string;
|
|
146
|
+
description: string;
|
|
147
|
+
redeemType: 'IN_PERSON' | 'ONLINE' | 'BOTH';
|
|
148
|
+
code?: string;
|
|
149
|
+
maxRedemptions?: number;
|
|
150
|
+
validUntil?: string;
|
|
151
|
+
createdAt: string;
|
|
152
|
+
updatedAt: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Create a new reward for a creator
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```tsx
|
|
159
|
+
* const createReward = useCreateCreatorReward(creatorId);
|
|
160
|
+
*
|
|
161
|
+
* await createReward.mutateAsync({
|
|
162
|
+
* badgeId: 'badge-123',
|
|
163
|
+
* title: 'Free Session',
|
|
164
|
+
* description: 'Get a free 30-minute session',
|
|
165
|
+
* redeemType: 'IN_PERSON',
|
|
166
|
+
* });
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
export declare function useCreateCreatorReward(creatorId: string): import("@tanstack/react-query").UseMutationResult<CreatorRewardResponse, Error, CreateCreatorRewardRequest, unknown>;
|
|
@@ -4,6 +4,7 @@ exports.useCreateCreator = useCreateCreator;
|
|
|
4
4
|
exports.useUpdateCreator = useUpdateCreator;
|
|
5
5
|
exports.useAddCreatorAvailability = useAddCreatorAvailability;
|
|
6
6
|
exports.useRemoveCreatorAvailability = useRemoveCreatorAvailability;
|
|
7
|
+
exports.useCreateCreatorReward = useCreateCreatorReward;
|
|
7
8
|
const react_query_1 = require("@tanstack/react-query");
|
|
8
9
|
const client_1 = require("../client");
|
|
9
10
|
const creators_1 = require("../queries/creators");
|
|
@@ -126,4 +127,33 @@ function useRemoveCreatorAvailability(options) {
|
|
|
126
127
|
...options,
|
|
127
128
|
});
|
|
128
129
|
}
|
|
129
|
-
|
|
130
|
+
/**
|
|
131
|
+
* Create a new reward for a creator
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```tsx
|
|
135
|
+
* const createReward = useCreateCreatorReward(creatorId);
|
|
136
|
+
*
|
|
137
|
+
* await createReward.mutateAsync({
|
|
138
|
+
* badgeId: 'badge-123',
|
|
139
|
+
* title: 'Free Session',
|
|
140
|
+
* description: 'Get a free 30-minute session',
|
|
141
|
+
* redeemType: 'IN_PERSON',
|
|
142
|
+
* });
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
function useCreateCreatorReward(creatorId) {
|
|
146
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
147
|
+
return (0, react_query_1.useMutation)({
|
|
148
|
+
mutationFn: async (data) => {
|
|
149
|
+
const client = (0, client_1.getApiClient)();
|
|
150
|
+
const response = await client.post(`/api/v1/creators/${creatorId}/rewards`, data);
|
|
151
|
+
return response.data;
|
|
152
|
+
},
|
|
153
|
+
onSuccess: () => {
|
|
154
|
+
queryClient.invalidateQueries({ queryKey: creators_1.creatorKeys.detail(creatorId) });
|
|
155
|
+
queryClient.invalidateQueries({ queryKey: ['creator-rewards', creatorId] });
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9jcmVhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQThCQSw0Q0FnQkM7QUFlRCw0Q0FvQkM7QUFxQkQsOERBNkJDO0FBZUQsb0VBd0JDO0FBNkNELHdEQWNDO0FBck9ELHVEQUF3RjtBQUN4RixzQ0FBeUM7QUFDekMsa0RBQWtEO0FBU2xELCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsK0VBQStFO0FBRS9FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE9BQThGO0lBRTlGLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBMEIsRUFBNEIsRUFBRTtZQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixPQUdDO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxJ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O1lBQ2xGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQkFBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0UsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50LCBVc2VNdXRhdGlvbk9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IGNyZWF0b3JLZXlzIH0gZnJvbSAnLi4vcXVlcmllcy9jcmVhdG9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIENyZWF0b3JSZXNwb25zZSxcbiAgQ3JlYXRvckF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICBDcmVhdGVDcmVhdG9yUmVxdWVzdCxcbiAgVXBkYXRlQ3JlYXRvclJlcXVlc3QsXG4gIENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3QsXG59IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTVVUQVRJT04gSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgY3JlYXRvciBwcm9maWxlIGZvciB0aGUgY3VycmVudCB1c2VyXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGVBc3luYzogY3JlYXRlQ3JlYXRvciB9ID0gdXNlQ3JlYXRlQ3JlYXRvcigpO1xuICpcbiAqIGF3YWl0IGNyZWF0ZUNyZWF0b3Ioe1xuICogICBzbHVnOiAnam9obi1kb2UnLFxuICogICBkaXNwbGF5TmFtZTogJ0pvaG4gRG9lJyxcbiAqICAgYmlvOiAnV2VsbG5lc3MgZmFjaWxpdGF0b3InLFxuICogICBjYW5GYWNpbGl0YXRlOiB0cnVlLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0ZUNyZWF0b3IoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxDcmVhdG9yUmVzcG9uc2UsIEVycm9yLCBDcmVhdGVDcmVhdG9yUmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlQ3JlYXRvclJlcXVlc3QpOiBQcm9taXNlPENyZWF0b3JSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KCcvYXBpL3YxL2NyZWF0b3JzJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuYWxsIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGEgY3JlYXRvciBwcm9maWxlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGVBc3luYzogdXBkYXRlQ3JlYXRvciB9ID0gdXNlVXBkYXRlQ3JlYXRvcigpO1xuICpcbiAqIGF3YWl0IHVwZGF0ZUNyZWF0b3Ioe1xuICogICBpZDogJ2NyZWF0b3ItMTIzJyxcbiAqICAgZGF0YTogeyBiaW86ICdVcGRhdGVkIGJpbycgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVcGRhdGVDcmVhdG9yKFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8Q3JlYXRvclJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVDcmVhdG9yUmVxdWVzdCB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7IGlkLCBkYXRhIH06IHsgaWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlQ3JlYXRvclJlcXVlc3QgfSk6IFByb21pc2U8Q3JlYXRvclJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBhdGNoKGAvYXBpL3YxL2NyZWF0b3JzLyR7aWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHZhcmlhYmxlcykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5tZSgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogQWRkIGFuIGF2YWlsYWJpbGl0eSBzbG90IGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZUFzeW5jOiBhZGRBdmFpbGFiaWxpdHkgfSA9IHVzZUFkZENyZWF0b3JBdmFpbGFiaWxpdHkoKTtcbiAqXG4gKiBhd2FpdCBhZGRBdmFpbGFiaWxpdHkoe1xuICogICBjcmVhdG9ySWQ6ICdjcmVhdG9yLTEyMycsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBkYXlPZldlZWs6IDEsIC8vIE1vbmRheVxuICogICAgIHN0YXJ0VGltZTogJzA5OjAwJyxcbiAqICAgICBlbmRUaW1lOiAnMTc6MDAnLFxuICogICAgIHRpbWV6b25lOiAnRXVyb3BlL0xvbmRvbicsXG4gKiAgICAgaXNSZWN1cnJpbmc6IHRydWUsXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRkQ3JlYXRvckF2YWlsYWJpbGl0eShcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPFxuICAgICAgQ3JlYXRvckF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICAgICAgRXJyb3IsXG4gICAgICB7IGNyZWF0b3JJZDogc3RyaW5nOyBkYXRhOiBDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0IH1cbiAgICA+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGNyZWF0b3JJZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgY3JlYXRvcklkOiBzdHJpbmc7XG4gICAgICBkYXRhOiBDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPENyZWF0b3JBdmFpbGFiaWxpdHlSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9hdmFpbGFiaWxpdHlgLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5hdmFpbGFiaWxpdHkodmFyaWFibGVzLmNyZWF0b3JJZCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYW4gYXZhaWxhYmlsaXR5IHNsb3QgZm9yIGEgY3JlYXRvclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlQXN5bmM6IHJlbW92ZUF2YWlsYWJpbGl0eSB9ID0gdXNlUmVtb3ZlQ3JlYXRvckF2YWlsYWJpbGl0eSgpO1xuICpcbiAqIGF3YWl0IHJlbW92ZUF2YWlsYWJpbGl0eSh7XG4gKiAgIGNyZWF0b3JJZDogJ2NyZWF0b3ItMTIzJyxcbiAqICAgYXZhaWxhYmlsaXR5SWQ6ICdhdmFpbGFiaWxpdHktNDU2JyxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZW1vdmVDcmVhdG9yQXZhaWxhYmlsaXR5KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8dm9pZCwgRXJyb3IsIHsgY3JlYXRvcklkOiBzdHJpbmc7IGF2YWlsYWJpbGl0eUlkOiBzdHJpbmcgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgY3JlYXRvcklkLFxuICAgICAgYXZhaWxhYmlsaXR5SWQsXG4gICAgfToge1xuICAgICAgY3JlYXRvcklkOiBzdHJpbmc7XG4gICAgICBhdmFpbGFiaWxpdHlJZDogc3RyaW5nO1xuICAgIH0pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZShgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vYXZhaWxhYmlsaXR5LyR7YXZhaWxhYmlsaXR5SWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB2YXJpYWJsZXMpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmF2YWlsYWJpbGl0eSh2YXJpYWJsZXMuY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDUkVBVE9SIFJFV0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDcmVhdG9yUmV3YXJkUmVxdWVzdCB7XG4gIGJhZGdlSWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVkZWVtVHlwZTogJ0lOX1BFUlNPTicgfCAnT05MSU5FJyB8ICdCT1RIJztcbiAgY29kZT86IHN0cmluZztcbiAgbWF4UmVkZW1wdGlvbnM/OiBudW1iZXI7XG4gIHZhbGlkVW50aWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRvclJld2FyZFJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgY3JlYXRvcklkOiBzdHJpbmc7XG4gIGJhZGdlSWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVkZWVtVHlwZTogJ0lOX1BFUlNPTicgfCAnT05MSU5FJyB8ICdCT1RIJztcbiAgY29kZT86IHN0cmluZztcbiAgbWF4UmVkZW1wdGlvbnM/OiBudW1iZXI7XG4gIHZhbGlkVW50aWw/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgcmV3YXJkIGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBjcmVhdGVSZXdhcmQgPSB1c2VDcmVhdGVDcmVhdG9yUmV3YXJkKGNyZWF0b3JJZCk7XG4gKlxuICogYXdhaXQgY3JlYXRlUmV3YXJkLm11dGF0ZUFzeW5jKHtcbiAqICAgYmFkZ2VJZDogJ2JhZGdlLTEyMycsXG4gKiAgIHRpdGxlOiAnRnJlZSBTZXNzaW9uJyxcbiAqICAgZGVzY3JpcHRpb246ICdHZXQgYSBmcmVlIDMwLW1pbnV0ZSBzZXNzaW9uJyxcbiAqICAgcmVkZWVtVHlwZTogJ0lOX1BFUlNPTicsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlQ3JlYXRvclJld2FyZChjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlQ3JlYXRvclJld2FyZFJlcXVlc3QpOiBQcm9taXNlPENyZWF0b3JSZXdhcmRSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9yZXdhcmRzYCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuZGV0YWlsKGNyZWF0b3JJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBbJ2NyZWF0b3ItcmV3YXJkcycsIGNyZWF0b3JJZF0gfSk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -169,3 +169,62 @@ export function useRemoveCreatorAvailability(
|
|
|
169
169
|
...options,
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
|
+
|
|
173
|
+
// ============================================================================
|
|
174
|
+
// CREATOR REWARDS
|
|
175
|
+
// ============================================================================
|
|
176
|
+
|
|
177
|
+
export interface CreateCreatorRewardRequest {
|
|
178
|
+
badgeId: string;
|
|
179
|
+
title: string;
|
|
180
|
+
description: string;
|
|
181
|
+
redeemType: 'IN_PERSON' | 'ONLINE' | 'BOTH';
|
|
182
|
+
code?: string;
|
|
183
|
+
maxRedemptions?: number;
|
|
184
|
+
validUntil?: string;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export interface CreatorRewardResponse {
|
|
188
|
+
id: string;
|
|
189
|
+
creatorId: string;
|
|
190
|
+
badgeId: string;
|
|
191
|
+
title: string;
|
|
192
|
+
description: string;
|
|
193
|
+
redeemType: 'IN_PERSON' | 'ONLINE' | 'BOTH';
|
|
194
|
+
code?: string;
|
|
195
|
+
maxRedemptions?: number;
|
|
196
|
+
validUntil?: string;
|
|
197
|
+
createdAt: string;
|
|
198
|
+
updatedAt: string;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Create a new reward for a creator
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```tsx
|
|
206
|
+
* const createReward = useCreateCreatorReward(creatorId);
|
|
207
|
+
*
|
|
208
|
+
* await createReward.mutateAsync({
|
|
209
|
+
* badgeId: 'badge-123',
|
|
210
|
+
* title: 'Free Session',
|
|
211
|
+
* description: 'Get a free 30-minute session',
|
|
212
|
+
* redeemType: 'IN_PERSON',
|
|
213
|
+
* });
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
export function useCreateCreatorReward(creatorId: string) {
|
|
217
|
+
const queryClient = useQueryClient();
|
|
218
|
+
|
|
219
|
+
return useMutation({
|
|
220
|
+
mutationFn: async (data: CreateCreatorRewardRequest): Promise<CreatorRewardResponse> => {
|
|
221
|
+
const client = getApiClient();
|
|
222
|
+
const response = await client.post(`/api/v1/creators/${creatorId}/rewards`, data);
|
|
223
|
+
return response.data;
|
|
224
|
+
},
|
|
225
|
+
onSuccess: () => {
|
|
226
|
+
queryClient.invalidateQueries({ queryKey: creatorKeys.detail(creatorId) });
|
|
227
|
+
queryClient.invalidateQueries({ queryKey: ['creator-rewards', creatorId] });
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
}
|