@spotsdev/sdk 1.0.0
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.
- package/dist/api/client.d.ts +12 -0
- package/dist/api/client.js +68 -0
- package/dist/api/mutations/clubs.d.ts +47 -0
- package/dist/api/mutations/clubs.js +95 -0
- package/dist/api/mutations/conversations.d.ts +45 -0
- package/dist/api/mutations/conversations.js +110 -0
- package/dist/api/mutations/index.d.ts +13 -0
- package/dist/api/mutations/index.js +38 -0
- package/dist/api/mutations/notifications.d.ts +38 -0
- package/dist/api/mutations/notifications.js +64 -0
- package/dist/api/mutations/orders.d.ts +73 -0
- package/dist/api/mutations/orders.js +116 -0
- package/dist/api/mutations/posts.d.ts +123 -0
- package/dist/api/mutations/posts.js +229 -0
- package/dist/api/mutations/products.d.ts +81 -0
- package/dist/api/mutations/products.js +102 -0
- package/dist/api/mutations/spots.d.ts +59 -0
- package/dist/api/mutations/spots.js +129 -0
- package/dist/api/mutations/users.d.ts +71 -0
- package/dist/api/mutations/users.js +173 -0
- package/dist/api/queries/auth.d.ts +37 -0
- package/dist/api/queries/auth.js +61 -0
- package/dist/api/queries/clubs.d.ts +52 -0
- package/dist/api/queries/clubs.js +116 -0
- package/dist/api/queries/conversations.d.ts +52 -0
- package/dist/api/queries/conversations.js +83 -0
- package/dist/api/queries/index.d.ts +26 -0
- package/dist/api/queries/index.js +65 -0
- package/dist/api/queries/misc.d.ts +54 -0
- package/dist/api/queries/misc.js +129 -0
- package/dist/api/queries/notifications.d.ts +34 -0
- package/dist/api/queries/notifications.js +62 -0
- package/dist/api/queries/orders.d.ts +45 -0
- package/dist/api/queries/orders.js +93 -0
- package/dist/api/queries/posts.d.ts +55 -0
- package/dist/api/queries/posts.js +130 -0
- package/dist/api/queries/products.d.ts +52 -0
- package/dist/api/queries/products.js +89 -0
- package/dist/api/queries/spots.d.ts +78 -0
- package/dist/api/queries/spots.js +168 -0
- package/dist/api/queries/templates.d.ts +42 -0
- package/dist/api/queries/templates.js +86 -0
- package/dist/api/queries/users.d.ts +90 -0
- package/dist/api/queries/users.js +187 -0
- package/dist/api/services/index.d.ts +2 -0
- package/dist/api/services/index.js +8 -0
- package/dist/api/services/marketplace.d.ts +129 -0
- package/dist/api/services/marketplace.js +168 -0
- package/dist/api/types.d.ts +54 -0
- package/dist/api/types.js +34 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +73 -0
- package/package.json +57 -0
- package/src/api/client.ts +78 -0
- package/src/api/mutations/clubs.ts +107 -0
- package/src/api/mutations/conversations.ts +124 -0
- package/src/api/mutations/index.ts +29 -0
- package/src/api/mutations/notifications.ts +70 -0
- package/src/api/mutations/orders.ts +174 -0
- package/src/api/mutations/posts.ts +278 -0
- package/src/api/mutations/products.ts +160 -0
- package/src/api/mutations/spots.ts +146 -0
- package/src/api/mutations/users.ts +197 -0
- package/src/api/queries/auth.ts +67 -0
- package/src/api/queries/clubs.ts +135 -0
- package/src/api/queries/conversations.ts +94 -0
- package/src/api/queries/index.ts +48 -0
- package/src/api/queries/misc.ts +140 -0
- package/src/api/queries/notifications.ts +66 -0
- package/src/api/queries/orders.ts +119 -0
- package/src/api/queries/posts.ts +142 -0
- package/src/api/queries/products.ts +123 -0
- package/src/api/queries/spots.ts +201 -0
- package/src/api/queries/templates.ts +95 -0
- package/src/api/queries/users.ts +206 -0
- package/src/api/services/index.ts +6 -0
- package/src/api/services/marketplace.ts +265 -0
- package/src/api/types.ts +144 -0
- package/src/index.ts +63 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
export interface SDKConfig {
|
|
3
|
+
baseURL: string;
|
|
4
|
+
getAccessToken: () => string | null | Promise<string | null>;
|
|
5
|
+
refreshAccessToken?: () => Promise<string>;
|
|
6
|
+
onUnauthorized?: () => void;
|
|
7
|
+
}
|
|
8
|
+
declare let apiClient: AxiosInstance | null;
|
|
9
|
+
export declare function configureSDK(sdkConfig: SDKConfig): void;
|
|
10
|
+
export declare function getApiClient(): AxiosInstance;
|
|
11
|
+
export declare function getConfig(): SDKConfig;
|
|
12
|
+
export { apiClient };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.apiClient = void 0;
|
|
7
|
+
exports.configureSDK = configureSDK;
|
|
8
|
+
exports.getApiClient = getApiClient;
|
|
9
|
+
exports.getConfig = getConfig;
|
|
10
|
+
const axios_1 = __importDefault(require("axios"));
|
|
11
|
+
let config = null;
|
|
12
|
+
let apiClient = null;
|
|
13
|
+
exports.apiClient = apiClient;
|
|
14
|
+
function configureSDK(sdkConfig) {
|
|
15
|
+
config = sdkConfig;
|
|
16
|
+
exports.apiClient = apiClient = createApiClient(sdkConfig);
|
|
17
|
+
}
|
|
18
|
+
function getApiClient() {
|
|
19
|
+
if (!apiClient) {
|
|
20
|
+
throw new Error('SDK not configured. Call configureSDK() first.');
|
|
21
|
+
}
|
|
22
|
+
return apiClient;
|
|
23
|
+
}
|
|
24
|
+
function getConfig() {
|
|
25
|
+
if (!config) {
|
|
26
|
+
throw new Error('SDK not configured. Call configureSDK() first.');
|
|
27
|
+
}
|
|
28
|
+
return config;
|
|
29
|
+
}
|
|
30
|
+
function createApiClient(sdkConfig) {
|
|
31
|
+
const client = axios_1.default.create({
|
|
32
|
+
baseURL: sdkConfig.baseURL,
|
|
33
|
+
headers: {
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
// Request interceptor - add auth token
|
|
38
|
+
client.interceptors.request.use(async (requestConfig) => {
|
|
39
|
+
const token = await sdkConfig.getAccessToken();
|
|
40
|
+
if (token) {
|
|
41
|
+
requestConfig.headers.Authorization = `Bearer ${token}`;
|
|
42
|
+
}
|
|
43
|
+
return requestConfig;
|
|
44
|
+
}, (error) => Promise.reject(error));
|
|
45
|
+
// Response interceptor - handle 401
|
|
46
|
+
client.interceptors.response.use((response) => response, async (error) => {
|
|
47
|
+
if (error.response?.status === 401) {
|
|
48
|
+
if (sdkConfig.refreshAccessToken) {
|
|
49
|
+
try {
|
|
50
|
+
const newToken = await sdkConfig.refreshAccessToken();
|
|
51
|
+
if (newToken && error.config) {
|
|
52
|
+
error.config.headers.Authorization = `Bearer ${newToken}`;
|
|
53
|
+
return client.request(error.config);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
sdkConfig.onUnauthorized?.();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
sdkConfig.onUnauthorized?.();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return Promise.reject(error);
|
|
65
|
+
});
|
|
66
|
+
return client;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBWUEsb0NBR0M7QUFFRCxvQ0FLQztBQUVELDhCQUtDO0FBN0JELGtEQUFxRjtBQVNyRixJQUFJLE1BQU0sR0FBcUIsSUFBSSxDQUFDO0FBQ3BDLElBQUksU0FBUyxHQUF5QixJQUFJLENBQUM7QUFtRWxDLDhCQUFTO0FBakVsQixTQUFnQixZQUFZLENBQUMsU0FBb0I7SUFDL0MsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNuQixvQkFBQSxTQUFTLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxTQUFnQixZQUFZO0lBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQWdCLFNBQVM7SUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsU0FBb0I7SUFDM0MsTUFBTSxNQUFNLEdBQUcsZUFBSyxDQUFDLE1BQU0sQ0FBQztRQUMxQixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87UUFDMUIsT0FBTyxFQUFFO1lBQ1AsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQztLQUNGLENBQUMsQ0FBQztJQUVILHVDQUF1QztJQUN2QyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQzdCLEtBQUssRUFBRSxhQUF5QyxFQUFFLEVBQUU7UUFDbEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLFVBQVUsS0FBSyxFQUFFLENBQUM7UUFDMUQsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FDakMsQ0FBQztJQUVGLG9DQUFvQztJQUNwQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQzlCLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQ3RCLEtBQUssRUFBRSxLQUFpQixFQUFFLEVBQUU7UUFDMUIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUM7b0JBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDdEQsSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUM3QixLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxRQUFRLEVBQUUsQ0FBQzt3QkFDMUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEMsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE1BQU0sQ0FBQztvQkFDUCxTQUFTLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDLENBQ0YsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MsIHsgQXhpb3NJbnN0YW5jZSwgQXhpb3NFcnJvciwgSW50ZXJuYWxBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU0RLQ29uZmlnIHtcbiAgYmFzZVVSTDogc3RyaW5nO1xuICBnZXRBY2Nlc3NUb2tlbjogKCkgPT4gc3RyaW5nIHwgbnVsbCB8IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIHJlZnJlc2hBY2Nlc3NUb2tlbj86ICgpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgb25VbmF1dGhvcml6ZWQ/OiAoKSA9PiB2b2lkO1xufVxuXG5sZXQgY29uZmlnOiBTREtDb25maWcgfCBudWxsID0gbnVsbDtcbmxldCBhcGlDbGllbnQ6IEF4aW9zSW5zdGFuY2UgfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZVNESyhzZGtDb25maWc6IFNES0NvbmZpZyk6IHZvaWQge1xuICBjb25maWcgPSBzZGtDb25maWc7XG4gIGFwaUNsaWVudCA9IGNyZWF0ZUFwaUNsaWVudChzZGtDb25maWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpQ2xpZW50KCk6IEF4aW9zSW5zdGFuY2Uge1xuICBpZiAoIWFwaUNsaWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU0RLIG5vdCBjb25maWd1cmVkLiBDYWxsIGNvbmZpZ3VyZVNESygpIGZpcnN0LicpO1xuICB9XG4gIHJldHVybiBhcGlDbGllbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcoKTogU0RLQ29uZmlnIHtcbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBub3QgY29uZmlndXJlZC4gQ2FsbCBjb25maWd1cmVTREsoKSBmaXJzdC4nKTtcbiAgfVxuICByZXR1cm4gY29uZmlnO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBcGlDbGllbnQoc2RrQ29uZmlnOiBTREtDb25maWcpOiBBeGlvc0luc3RhbmNlIHtcbiAgY29uc3QgY2xpZW50ID0gYXhpb3MuY3JlYXRlKHtcbiAgICBiYXNlVVJMOiBzZGtDb25maWcuYmFzZVVSTCxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFJlcXVlc3QgaW50ZXJjZXB0b3IgLSBhZGQgYXV0aCB0b2tlblxuICBjbGllbnQuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKFxuICAgIGFzeW5jIChyZXF1ZXN0Q29uZmlnOiBJbnRlcm5hbEF4aW9zUmVxdWVzdENvbmZpZykgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBzZGtDb25maWcuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICAgIGlmICh0b2tlbikge1xuICAgICAgICByZXF1ZXN0Q29uZmlnLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcXVlc3RDb25maWc7XG4gICAgfSxcbiAgICAoZXJyb3IpID0+IFByb21pc2UucmVqZWN0KGVycm9yKVxuICApO1xuXG4gIC8vIFJlc3BvbnNlIGludGVyY2VwdG9yIC0gaGFuZGxlIDQwMVxuICBjbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShcbiAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLFxuICAgIGFzeW5jIChlcnJvcjogQXhpb3NFcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yLnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICBpZiAoc2RrQ29uZmlnLnJlZnJlc2hBY2Nlc3NUb2tlbikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBuZXdUb2tlbiA9IGF3YWl0IHNka0NvbmZpZy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcbiAgICAgICAgICAgIGlmIChuZXdUb2tlbiAmJiBlcnJvci5jb25maWcpIHtcbiAgICAgICAgICAgICAgZXJyb3IuY29uZmlnLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHtuZXdUb2tlbn1gO1xuICAgICAgICAgICAgICByZXR1cm4gY2xpZW50LnJlcXVlc3QoZXJyb3IuY29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHNka0NvbmZpZy5vblVuYXV0aG9yaXplZD8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNka0NvbmZpZy5vblVuYXV0aG9yaXplZD8uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxuICApO1xuXG4gIHJldHVybiBjbGllbnQ7XG59XG5cbmV4cG9ydCB7IGFwaUNsaWVudCB9O1xuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clubs Mutation Hooks
|
|
3
|
+
*
|
|
4
|
+
* TanStack Query hooks for club mutation operations.
|
|
5
|
+
*/
|
|
6
|
+
import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
7
|
+
import type { Club } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Create a new club
|
|
10
|
+
*
|
|
11
|
+
* @endpoint POST /api/v1/clubs
|
|
12
|
+
*/
|
|
13
|
+
export declare function useCreateClub(options?: Omit<UseMutationOptions<Club, Error, {
|
|
14
|
+
spotId: string;
|
|
15
|
+
name: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}>, 'mutationFn'>): UseMutationResult<Club, Error, {
|
|
18
|
+
spotId: string;
|
|
19
|
+
name: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Update a club
|
|
24
|
+
*
|
|
25
|
+
* @endpoint PUT /api/v1/clubs/{id}
|
|
26
|
+
*/
|
|
27
|
+
export declare function useUpdateClub(options?: Omit<UseMutationOptions<Club, Error, {
|
|
28
|
+
clubId: string;
|
|
29
|
+
name?: string;
|
|
30
|
+
description?: string;
|
|
31
|
+
}>, 'mutationFn'>): UseMutationResult<Club, Error, {
|
|
32
|
+
clubId: string;
|
|
33
|
+
name?: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Join a club
|
|
38
|
+
*
|
|
39
|
+
* @endpoint POST /api/v1/clubs/{id}/join
|
|
40
|
+
*/
|
|
41
|
+
export declare function useJoinClub(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
|
|
42
|
+
/**
|
|
43
|
+
* Leave a club
|
|
44
|
+
*
|
|
45
|
+
* @endpoint POST /api/v1/clubs/{id}/leave
|
|
46
|
+
*/
|
|
47
|
+
export declare function useLeaveClub(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Clubs Mutation Hooks
|
|
4
|
+
*
|
|
5
|
+
* TanStack Query hooks for club mutation operations.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.useCreateClub = useCreateClub;
|
|
9
|
+
exports.useUpdateClub = useUpdateClub;
|
|
10
|
+
exports.useJoinClub = useJoinClub;
|
|
11
|
+
exports.useLeaveClub = useLeaveClub;
|
|
12
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
13
|
+
const client_1 = require("../client");
|
|
14
|
+
const clubs_1 = require("../queries/clubs");
|
|
15
|
+
const users_1 = require("../queries/users");
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// MUTATION HOOKS
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Create a new club
|
|
21
|
+
*
|
|
22
|
+
* @endpoint POST /api/v1/clubs
|
|
23
|
+
*/
|
|
24
|
+
function useCreateClub(options) {
|
|
25
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
26
|
+
return (0, react_query_1.useMutation)({
|
|
27
|
+
mutationFn: async (data) => {
|
|
28
|
+
const client = (0, client_1.getApiClient)();
|
|
29
|
+
const response = await client.post('/api/v1/clubs', data);
|
|
30
|
+
return response.data.data;
|
|
31
|
+
},
|
|
32
|
+
onSuccess: (_, variables) => {
|
|
33
|
+
queryClient.invalidateQueries({ queryKey: clubs_1.clubKeys.bySpot(variables.spotId) });
|
|
34
|
+
},
|
|
35
|
+
...options,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Update a club
|
|
40
|
+
*
|
|
41
|
+
* @endpoint PUT /api/v1/clubs/{id}
|
|
42
|
+
*/
|
|
43
|
+
function useUpdateClub(options) {
|
|
44
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
45
|
+
return (0, react_query_1.useMutation)({
|
|
46
|
+
mutationFn: async ({ clubId, ...data }) => {
|
|
47
|
+
const client = (0, client_1.getApiClient)();
|
|
48
|
+
const response = await client.put(`/api/v1/clubs/${clubId}`, data);
|
|
49
|
+
return response.data.data;
|
|
50
|
+
},
|
|
51
|
+
onSuccess: (data, variables) => {
|
|
52
|
+
queryClient.setQueryData(clubs_1.clubKeys.detail(variables.clubId), data);
|
|
53
|
+
},
|
|
54
|
+
...options,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Join a club
|
|
59
|
+
*
|
|
60
|
+
* @endpoint POST /api/v1/clubs/{id}/join
|
|
61
|
+
*/
|
|
62
|
+
function useJoinClub(options) {
|
|
63
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
64
|
+
return (0, react_query_1.useMutation)({
|
|
65
|
+
mutationFn: async (clubId) => {
|
|
66
|
+
const client = (0, client_1.getApiClient)();
|
|
67
|
+
await client.post(`/api/v1/clubs/${clubId}/join`);
|
|
68
|
+
},
|
|
69
|
+
onSuccess: (_, clubId) => {
|
|
70
|
+
queryClient.invalidateQueries({ queryKey: clubs_1.clubKeys.detail(clubId) });
|
|
71
|
+
queryClient.invalidateQueries({ queryKey: users_1.userKeys.clubs() });
|
|
72
|
+
},
|
|
73
|
+
...options,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Leave a club
|
|
78
|
+
*
|
|
79
|
+
* @endpoint POST /api/v1/clubs/{id}/leave
|
|
80
|
+
*/
|
|
81
|
+
function useLeaveClub(options) {
|
|
82
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
83
|
+
return (0, react_query_1.useMutation)({
|
|
84
|
+
mutationFn: async (clubId) => {
|
|
85
|
+
const client = (0, client_1.getApiClient)();
|
|
86
|
+
await client.post(`/api/v1/clubs/${clubId}/leave`);
|
|
87
|
+
},
|
|
88
|
+
onSuccess: (_, clubId) => {
|
|
89
|
+
queryClient.invalidateQueries({ queryKey: clubs_1.clubKeys.detail(clubId) });
|
|
90
|
+
queryClient.invalidateQueries({ queryKey: users_1.userKeys.clubs() });
|
|
91
|
+
},
|
|
92
|
+
...options,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1YnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9jbHVicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7QUFpQkgsc0NBZ0JDO0FBT0Qsc0NBZ0JDO0FBT0Qsa0NBZ0JDO0FBT0Qsb0NBZ0JDO0FBcEdELHVEQUEyRztBQUMzRyxzQ0FBeUM7QUFDekMsNENBQTRDO0FBQzVDLDRDQUE0QztBQUc1QywrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsU0FBZ0IsYUFBYSxDQUMzQixPQUFxSDtJQUVySCxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBaUIsRUFBRTtZQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQW9CLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3RSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDMUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsYUFBYSxDQUMzQixPQUFzSDtJQUV0SCxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQWlCLEVBQUU7WUFDdkQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFvQixpQkFBaUIsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQzdCLFdBQVcsQ0FBQyxZQUFZLENBQUMsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsT0FBcUU7SUFFckUsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFjLEVBQWlCLEVBQUU7WUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixNQUFNLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdkIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUMxQixPQUFxRTtJQUVyRSxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQWMsRUFBaUIsRUFBRTtZQUNsRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLE1BQU0sUUFBUSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN2QixXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxnQkFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2x1YnMgTXV0YXRpb24gSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBob29rcyBmb3IgY2x1YiBtdXRhdGlvbiBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCwgVXNlTXV0YXRpb25PcHRpb25zLCBVc2VNdXRhdGlvblJlc3VsdCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgY2x1YktleXMgfSBmcm9tICcuLi9xdWVyaWVzL2NsdWJzJztcbmltcG9ydCB7IHVzZXJLZXlzIH0gZnJvbSAnLi4vcXVlcmllcy91c2Vycyc7XG5pbXBvcnQgdHlwZSB7IENsdWIsIEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNVVRBVElPTiBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBjbHViXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9jbHVic1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlQ2x1YihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPENsdWIsIEVycm9yLCB7IHNwb3RJZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH0+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxDbHViLCBFcnJvciwgeyBzcG90SWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBkZXNjcmlwdGlvbj86IHN0cmluZyB9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhKTogUHJvbWlzZTxDbHViPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QXBpUmVzcG9uc2U8Q2x1Yj4+KCcvYXBpL3YxL2NsdWJzJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjbHViS2V5cy5ieVNwb3QodmFyaWFibGVzLnNwb3RJZCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYSBjbHViXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL2NsdWJzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUNsdWIoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxDbHViLCBFcnJvciwgeyBjbHViSWQ6IHN0cmluZzsgbmFtZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmcgfT4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PENsdWIsIEVycm9yLCB7IGNsdWJJZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBkZXNjcmlwdGlvbj86IHN0cmluZyB9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7IGNsdWJJZCwgLi4uZGF0YSB9KTogUHJvbWlzZTxDbHViPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dDxBcGlSZXNwb25zZTxDbHViPj4oYC9hcGkvdjEvY2x1YnMvJHtjbHViSWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoZGF0YSwgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyeURhdGEoY2x1YktleXMuZGV0YWlsKHZhcmlhYmxlcy5jbHViSWQpLCBkYXRhKTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEpvaW4gYSBjbHViXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9jbHVicy97aWR9L2pvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUpvaW5DbHViKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8dm9pZCwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PHZvaWQsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGNsdWJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NsdWJzLyR7Y2x1YklkfS9qb2luYCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCBjbHViSWQpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNsdWJLZXlzLmRldGFpbChjbHViSWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogdXNlcktleXMuY2x1YnMoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIExlYXZlIGEgY2x1YlxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvY2x1YnMve2lkfS9sZWF2ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTGVhdmVDbHViKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8dm9pZCwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PHZvaWQsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGNsdWJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NsdWJzLyR7Y2x1YklkfS9sZWF2ZWApO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgY2x1YklkKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjbHViS2V5cy5kZXRhaWwoY2x1YklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHVzZXJLZXlzLmNsdWJzKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversations Mutation Hooks
|
|
3
|
+
*
|
|
4
|
+
* TanStack Query hooks for conversation/messaging mutation operations.
|
|
5
|
+
*/
|
|
6
|
+
import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
7
|
+
import type { Conversation, Message, CreateConversationRequest, SendMessageRequest } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Create a new conversation
|
|
10
|
+
*
|
|
11
|
+
* @endpoint POST /api/v1/conversations
|
|
12
|
+
*/
|
|
13
|
+
export declare function useCreateConversation(options?: Omit<UseMutationOptions<Conversation, Error, CreateConversationRequest>, 'mutationFn'>): UseMutationResult<Conversation, Error, CreateConversationRequest>;
|
|
14
|
+
/**
|
|
15
|
+
* Create or get direct conversation with a user
|
|
16
|
+
*
|
|
17
|
+
* @endpoint POST /api/v1/conversations/direct
|
|
18
|
+
*/
|
|
19
|
+
export declare function useCreateDirectConversation(options?: Omit<UseMutationOptions<Conversation, Error, {
|
|
20
|
+
userId: string;
|
|
21
|
+
}>, 'mutationFn'>): UseMutationResult<Conversation, Error, {
|
|
22
|
+
userId: string;
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Send a message in a conversation
|
|
26
|
+
*
|
|
27
|
+
* @endpoint POST /api/v1/conversations/{id}/messages
|
|
28
|
+
*/
|
|
29
|
+
export declare function useSendMessage(options?: Omit<UseMutationOptions<Message, Error, {
|
|
30
|
+
conversationId: string;
|
|
31
|
+
} & SendMessageRequest>, 'mutationFn'>): UseMutationResult<Message, Error, {
|
|
32
|
+
conversationId: string;
|
|
33
|
+
} & SendMessageRequest>;
|
|
34
|
+
/**
|
|
35
|
+
* Mark conversation as read
|
|
36
|
+
*
|
|
37
|
+
* @endpoint PUT /api/v1/conversations/{id}/read
|
|
38
|
+
*/
|
|
39
|
+
export declare function useMarkConversationAsRead(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
|
|
40
|
+
/**
|
|
41
|
+
* Send typing indicator
|
|
42
|
+
*
|
|
43
|
+
* @endpoint POST /api/v1/conversations/{id}/typing
|
|
44
|
+
*/
|
|
45
|
+
export declare function useSendTypingIndicator(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Conversations Mutation Hooks
|
|
4
|
+
*
|
|
5
|
+
* TanStack Query hooks for conversation/messaging mutation operations.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.useCreateConversation = useCreateConversation;
|
|
9
|
+
exports.useCreateDirectConversation = useCreateDirectConversation;
|
|
10
|
+
exports.useSendMessage = useSendMessage;
|
|
11
|
+
exports.useMarkConversationAsRead = useMarkConversationAsRead;
|
|
12
|
+
exports.useSendTypingIndicator = useSendTypingIndicator;
|
|
13
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
14
|
+
const client_1 = require("../client");
|
|
15
|
+
const conversations_1 = require("../queries/conversations");
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// MUTATION HOOKS
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Create a new conversation
|
|
21
|
+
*
|
|
22
|
+
* @endpoint POST /api/v1/conversations
|
|
23
|
+
*/
|
|
24
|
+
function useCreateConversation(options) {
|
|
25
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
26
|
+
return (0, react_query_1.useMutation)({
|
|
27
|
+
mutationFn: async (data) => {
|
|
28
|
+
const client = (0, client_1.getApiClient)();
|
|
29
|
+
const response = await client.post('/api/v1/conversations', data);
|
|
30
|
+
return response.data.data;
|
|
31
|
+
},
|
|
32
|
+
onSuccess: () => {
|
|
33
|
+
queryClient.invalidateQueries({ queryKey: conversations_1.conversationKeys.lists() });
|
|
34
|
+
},
|
|
35
|
+
...options,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create or get direct conversation with a user
|
|
40
|
+
*
|
|
41
|
+
* @endpoint POST /api/v1/conversations/direct
|
|
42
|
+
*/
|
|
43
|
+
function useCreateDirectConversation(options) {
|
|
44
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
45
|
+
return (0, react_query_1.useMutation)({
|
|
46
|
+
mutationFn: async (data) => {
|
|
47
|
+
const client = (0, client_1.getApiClient)();
|
|
48
|
+
const response = await client.post('/api/v1/conversations/direct', data);
|
|
49
|
+
return response.data.data;
|
|
50
|
+
},
|
|
51
|
+
onSuccess: () => {
|
|
52
|
+
queryClient.invalidateQueries({ queryKey: conversations_1.conversationKeys.lists() });
|
|
53
|
+
},
|
|
54
|
+
...options,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Send a message in a conversation
|
|
59
|
+
*
|
|
60
|
+
* @endpoint POST /api/v1/conversations/{id}/messages
|
|
61
|
+
*/
|
|
62
|
+
function useSendMessage(options) {
|
|
63
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
64
|
+
return (0, react_query_1.useMutation)({
|
|
65
|
+
mutationFn: async ({ conversationId, ...data }) => {
|
|
66
|
+
const client = (0, client_1.getApiClient)();
|
|
67
|
+
const response = await client.post(`/api/v1/conversations/${conversationId}/messages`, data);
|
|
68
|
+
return response.data.data;
|
|
69
|
+
},
|
|
70
|
+
onSuccess: (_, variables) => {
|
|
71
|
+
queryClient.invalidateQueries({ queryKey: conversations_1.conversationKeys.messages(variables.conversationId) });
|
|
72
|
+
queryClient.invalidateQueries({ queryKey: conversations_1.conversationKeys.lists() });
|
|
73
|
+
},
|
|
74
|
+
...options,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Mark conversation as read
|
|
79
|
+
*
|
|
80
|
+
* @endpoint PUT /api/v1/conversations/{id}/read
|
|
81
|
+
*/
|
|
82
|
+
function useMarkConversationAsRead(options) {
|
|
83
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
84
|
+
return (0, react_query_1.useMutation)({
|
|
85
|
+
mutationFn: async (conversationId) => {
|
|
86
|
+
const client = (0, client_1.getApiClient)();
|
|
87
|
+
await client.put(`/api/v1/conversations/${conversationId}/read`);
|
|
88
|
+
},
|
|
89
|
+
onSuccess: (_, conversationId) => {
|
|
90
|
+
queryClient.invalidateQueries({ queryKey: conversations_1.conversationKeys.detail(conversationId) });
|
|
91
|
+
queryClient.invalidateQueries({ queryKey: conversations_1.conversationKeys.lists() });
|
|
92
|
+
},
|
|
93
|
+
...options,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Send typing indicator
|
|
98
|
+
*
|
|
99
|
+
* @endpoint POST /api/v1/conversations/{id}/typing
|
|
100
|
+
*/
|
|
101
|
+
function useSendTypingIndicator(options) {
|
|
102
|
+
return (0, react_query_1.useMutation)({
|
|
103
|
+
mutationFn: async (conversationId) => {
|
|
104
|
+
const client = (0, client_1.getApiClient)();
|
|
105
|
+
await client.post(`/api/v1/conversations/${conversationId}/typing`);
|
|
106
|
+
},
|
|
107
|
+
...options,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvbXV0YXRpb25zL2NvbnZlcnNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7O0FBZ0JILHNEQWdCQztBQU9ELGtFQWdCQztBQU9ELHdDQWlCQztBQU9ELDhEQWdCQztBQU9ELHdEQVVDO0FBckhELHVEQUEyRztBQUMzRyxzQ0FBeUM7QUFDekMsNERBQTREO0FBRzVELCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsK0VBQStFO0FBRS9FOzs7O0dBSUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FDbkMsT0FBZ0c7SUFFaEcsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUErQixFQUF5QixFQUFFO1lBQzNFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBNEIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxnQ0FBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQ3pDLE9BQXlGO0lBRXpGLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFL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IENvbnZlcnNhdGlvbnMgTXV0YXRpb24gSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBob29rcyBmb3IgY29udmVyc2F0aW9uL21lc3NhZ2luZyBtdXRhdGlvbiBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCwgVXNlTXV0YXRpb25PcHRpb25zLCBVc2VNdXRhdGlvblJlc3VsdCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgY29udmVyc2F0aW9uS2V5cyB9IGZyb20gJy4uL3F1ZXJpZXMvY29udmVyc2F0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IENvbnZlcnNhdGlvbiwgTWVzc2FnZSwgQ3JlYXRlQ29udmVyc2F0aW9uUmVxdWVzdCwgU2VuZE1lc3NhZ2VSZXF1ZXN0LCBBcGlSZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTVVUQVRJT04gSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgY29udmVyc2F0aW9uXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9jb252ZXJzYXRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdGVDb252ZXJzYXRpb24oXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxDb252ZXJzYXRpb24sIEVycm9yLCBDcmVhdGVDb252ZXJzYXRpb25SZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8Q29udmVyc2F0aW9uLCBFcnJvciwgQ3JlYXRlQ29udmVyc2F0aW9uUmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlQ29udmVyc2F0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29udmVyc2F0aW9uPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QXBpUmVzcG9uc2U8Q29udmVyc2F0aW9uPj4oJy9hcGkvdjEvY29udmVyc2F0aW9ucycsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY29udmVyc2F0aW9uS2V5cy5saXN0cygpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIG9yIGdldCBkaXJlY3QgY29udmVyc2F0aW9uIHdpdGggYSB1c2VyXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9jb252ZXJzYXRpb25zL2RpcmVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlRGlyZWN0Q29udmVyc2F0aW9uKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8Q29udmVyc2F0aW9uLCBFcnJvciwgeyB1c2VySWQ6IHN0cmluZyB9PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8Q29udmVyc2F0aW9uLCBFcnJvciwgeyB1c2VySWQ6IHN0cmluZyB9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiB7IHVzZXJJZDogc3RyaW5nIH0pOiBQcm9taXNlPENvbnZlcnNhdGlvbj4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEFwaVJlc3BvbnNlPENvbnZlcnNhdGlvbj4+KCcvYXBpL3YxL2NvbnZlcnNhdGlvbnMvZGlyZWN0JywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjb252ZXJzYXRpb25LZXlzLmxpc3RzKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBTZW5kIGEgbWVzc2FnZSBpbiBhIGNvbnZlcnNhdGlvblxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvY29udmVyc2F0aW9ucy97aWR9L21lc3NhZ2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZW5kTWVzc2FnZShcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPE1lc3NhZ2UsIEVycm9yLCB7IGNvbnZlcnNhdGlvbklkOiBzdHJpbmcgfSAmIFNlbmRNZXNzYWdlUmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PE1lc3NhZ2UsIEVycm9yLCB7IGNvbnZlcnNhdGlvbklkOiBzdHJpbmcgfSAmIFNlbmRNZXNzYWdlUmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoeyBjb252ZXJzYXRpb25JZCwgLi4uZGF0YSB9KTogUHJvbWlzZTxNZXNzYWdlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QXBpUmVzcG9uc2U8TWVzc2FnZT4+KGAvYXBpL3YxL2NvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb25JZH0vbWVzc2FnZXNgLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB2YXJpYWJsZXMpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNvbnZlcnNhdGlvbktleXMubWVzc2FnZXModmFyaWFibGVzLmNvbnZlcnNhdGlvbklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNvbnZlcnNhdGlvbktleXMubGlzdHMoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIE1hcmsgY29udmVyc2F0aW9uIGFzIHJlYWRcbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvY29udmVyc2F0aW9ucy97aWR9L3JlYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1hcmtDb252ZXJzYXRpb25Bc1JlYWQoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczx2b2lkLCBFcnJvciwgc3RyaW5nPiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8dm9pZCwgRXJyb3IsIHN0cmluZz4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoY29udmVyc2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBhd2FpdCBjbGllbnQucHV0KGAvYXBpL3YxL2NvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb25JZH0vcmVhZGApO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgY29udmVyc2F0aW9uSWQpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNvbnZlcnNhdGlvbktleXMuZGV0YWlsKGNvbnZlcnNhdGlvbklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNvbnZlcnNhdGlvbktleXMubGlzdHMoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFNlbmQgdHlwaW5nIGluZGljYXRvclxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvY29udmVyc2F0aW9ucy97aWR9L3R5cGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VuZFR5cGluZ0luZGljYXRvcihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPHZvaWQsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDx2b2lkLCBFcnJvciwgc3RyaW5nPiB7XG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGNvbnZlcnNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LnBvc3QoYC9hcGkvdjEvY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfS90eXBpbmdgKTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spots SDK Mutation Hooks Index
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all mutation hooks.
|
|
5
|
+
*/
|
|
6
|
+
export * from './users';
|
|
7
|
+
export * from './posts';
|
|
8
|
+
export * from './spots';
|
|
9
|
+
export * from './conversations';
|
|
10
|
+
export * from './clubs';
|
|
11
|
+
export * from './notifications';
|
|
12
|
+
export * from './products';
|
|
13
|
+
export * from './orders';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Spots SDK Mutation Hooks Index
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all mutation hooks.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
// Users
|
|
23
|
+
__exportStar(require("./users"), exports);
|
|
24
|
+
// Posts
|
|
25
|
+
__exportStar(require("./posts"), exports);
|
|
26
|
+
// Spots
|
|
27
|
+
__exportStar(require("./spots"), exports);
|
|
28
|
+
// Conversations
|
|
29
|
+
__exportStar(require("./conversations"), exports);
|
|
30
|
+
// Clubs
|
|
31
|
+
__exportStar(require("./clubs"), exports);
|
|
32
|
+
// Notifications
|
|
33
|
+
__exportStar(require("./notifications"), exports);
|
|
34
|
+
// Products (marketplace)
|
|
35
|
+
__exportStar(require("./products"), exports);
|
|
36
|
+
// Orders (marketplace)
|
|
37
|
+
__exportStar(require("./orders"), exports);
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILFFBQVE7QUFDUiwwQ0FBd0I7QUFFeEIsUUFBUTtBQUNSLDBDQUF3QjtBQUV4QixRQUFRO0FBQ1IsMENBQXdCO0FBRXhCLGdCQUFnQjtBQUNoQixrREFBZ0M7QUFFaEMsUUFBUTtBQUNSLDBDQUF3QjtBQUV4QixnQkFBZ0I7QUFDaEIsa0RBQWdDO0FBRWhDLHlCQUF5QjtBQUN6Qiw2Q0FBMkI7QUFFM0IsdUJBQXVCO0FBQ3ZCLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3BvdHMgU0RLIE11dGF0aW9uIEhvb2tzIEluZGV4XG4gKlxuICogUmUtZXhwb3J0cyBhbGwgbXV0YXRpb24gaG9va3MuXG4gKi9cblxuLy8gVXNlcnNcbmV4cG9ydCAqIGZyb20gJy4vdXNlcnMnO1xuXG4vLyBQb3N0c1xuZXhwb3J0ICogZnJvbSAnLi9wb3N0cyc7XG5cbi8vIFNwb3RzXG5leHBvcnQgKiBmcm9tICcuL3Nwb3RzJztcblxuLy8gQ29udmVyc2F0aW9uc1xuZXhwb3J0ICogZnJvbSAnLi9jb252ZXJzYXRpb25zJztcblxuLy8gQ2x1YnNcbmV4cG9ydCAqIGZyb20gJy4vY2x1YnMnO1xuXG4vLyBOb3RpZmljYXRpb25zXG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMnO1xuXG4vLyBQcm9kdWN0cyAobWFya2V0cGxhY2UpXG5leHBvcnQgKiBmcm9tICcuL3Byb2R1Y3RzJztcblxuLy8gT3JkZXJzIChtYXJrZXRwbGFjZSlcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXJzJztcbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notifications Mutation Hooks
|
|
3
|
+
*
|
|
4
|
+
* TanStack Query hooks for notification mutation operations.
|
|
5
|
+
*/
|
|
6
|
+
import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
7
|
+
/**
|
|
8
|
+
* Mark notifications as read
|
|
9
|
+
*
|
|
10
|
+
* @endpoint PUT /api/v1/notifications/read
|
|
11
|
+
*/
|
|
12
|
+
export declare function useMarkNotificationsRead(options?: Omit<UseMutationOptions<void, Error, {
|
|
13
|
+
notificationIds?: string[];
|
|
14
|
+
}>, 'mutationFn'>): UseMutationResult<void, Error, {
|
|
15
|
+
notificationIds?: string[];
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Register device token for push notifications
|
|
19
|
+
*
|
|
20
|
+
* @endpoint POST /api/v1/device-tokens
|
|
21
|
+
*/
|
|
22
|
+
export declare function useRegisterDeviceToken(options?: Omit<UseMutationOptions<void, Error, {
|
|
23
|
+
token: string;
|
|
24
|
+
platform: 'ios' | 'android' | 'web';
|
|
25
|
+
}>, 'mutationFn'>): UseMutationResult<void, Error, {
|
|
26
|
+
token: string;
|
|
27
|
+
platform: 'ios' | 'android' | 'web';
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Remove device token
|
|
31
|
+
*
|
|
32
|
+
* @endpoint DELETE /api/v1/device-tokens
|
|
33
|
+
*/
|
|
34
|
+
export declare function useRemoveDeviceToken(options?: Omit<UseMutationOptions<void, Error, {
|
|
35
|
+
token: string;
|
|
36
|
+
}>, 'mutationFn'>): UseMutationResult<void, Error, {
|
|
37
|
+
token: string;
|
|
38
|
+
}>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Notifications Mutation Hooks
|
|
4
|
+
*
|
|
5
|
+
* TanStack Query hooks for notification mutation operations.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.useMarkNotificationsRead = useMarkNotificationsRead;
|
|
9
|
+
exports.useRegisterDeviceToken = useRegisterDeviceToken;
|
|
10
|
+
exports.useRemoveDeviceToken = useRemoveDeviceToken;
|
|
11
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
12
|
+
const client_1 = require("../client");
|
|
13
|
+
const notifications_1 = require("../queries/notifications");
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// MUTATION HOOKS
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Mark notifications as read
|
|
19
|
+
*
|
|
20
|
+
* @endpoint PUT /api/v1/notifications/read
|
|
21
|
+
*/
|
|
22
|
+
function useMarkNotificationsRead(options) {
|
|
23
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
24
|
+
return (0, react_query_1.useMutation)({
|
|
25
|
+
mutationFn: async (data) => {
|
|
26
|
+
const client = (0, client_1.getApiClient)();
|
|
27
|
+
await client.put('/api/v1/notifications/read', data);
|
|
28
|
+
},
|
|
29
|
+
onSuccess: () => {
|
|
30
|
+
queryClient.invalidateQueries({ queryKey: notifications_1.notificationKeys.lists() });
|
|
31
|
+
queryClient.invalidateQueries({ queryKey: notifications_1.notificationKeys.unreadCount() });
|
|
32
|
+
},
|
|
33
|
+
...options,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Register device token for push notifications
|
|
38
|
+
*
|
|
39
|
+
* @endpoint POST /api/v1/device-tokens
|
|
40
|
+
*/
|
|
41
|
+
function useRegisterDeviceToken(options) {
|
|
42
|
+
return (0, react_query_1.useMutation)({
|
|
43
|
+
mutationFn: async (data) => {
|
|
44
|
+
const client = (0, client_1.getApiClient)();
|
|
45
|
+
await client.post('/api/v1/device-tokens', data);
|
|
46
|
+
},
|
|
47
|
+
...options,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Remove device token
|
|
52
|
+
*
|
|
53
|
+
* @endpoint DELETE /api/v1/device-tokens
|
|
54
|
+
*/
|
|
55
|
+
function useRemoveDeviceToken(options) {
|
|
56
|
+
return (0, react_query_1.useMutation)({
|
|
57
|
+
mutationFn: async (data) => {
|
|
58
|
+
const client = (0, client_1.getApiClient)();
|
|
59
|
+
await client.delete('/api/v1/device-tokens', { data });
|
|
60
|
+
},
|
|
61
|
+
...options,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvbXV0YXRpb25zL25vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7O0FBZUgsNERBZ0JDO0FBT0Qsd0RBVUM7QUFPRCxvREFVQztBQS9ERCx1REFBMkc7QUFDM0csc0NBQXlDO0FBQ3pDLDREQUE0RDtBQUU1RCwrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQ3RDLE9BQTZGO0lBRTdGLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBb0MsRUFBaUIsRUFBRTtZQUN4RSxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0NBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxnQ0FBZ0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQ3BDLE9BQXFIO0lBRXJILE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFpQixFQUFFO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FDbEMsT0FBZ0Y7SUFFaEYsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQWlCLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTm90aWZpY2F0aW9ucyBNdXRhdGlvbiBIb29rc1xuICpcbiAqIFRhblN0YWNrIFF1ZXJ5IGhvb2tzIGZvciBub3RpZmljYXRpb24gbXV0YXRpb24gb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgeyB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQsIFVzZU11dGF0aW9uT3B0aW9ucywgVXNlTXV0YXRpb25SZXN1bHQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IG5vdGlmaWNhdGlvbktleXMgfSBmcm9tICcuLi9xdWVyaWVzL25vdGlmaWNhdGlvbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNVVRBVElPTiBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE1hcmsgbm90aWZpY2F0aW9ucyBhcyByZWFkXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL25vdGlmaWNhdGlvbnMvcmVhZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWFya05vdGlmaWNhdGlvbnNSZWFkKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8dm9pZCwgRXJyb3IsIHsgbm90aWZpY2F0aW9uSWRzPzogc3RyaW5nW10gfT4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PHZvaWQsIEVycm9yLCB7IG5vdGlmaWNhdGlvbklkcz86IHN0cmluZ1tdIH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IHsgbm90aWZpY2F0aW9uSWRzPzogc3RyaW5nW10gfSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBhd2FpdCBjbGllbnQucHV0KCcvYXBpL3YxL25vdGlmaWNhdGlvbnMvcmVhZCcsIGRhdGEpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBub3RpZmljYXRpb25LZXlzLmxpc3RzKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBub3RpZmljYXRpb25LZXlzLnVucmVhZENvdW50KCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBkZXZpY2UgdG9rZW4gZm9yIHB1c2ggbm90aWZpY2F0aW9uc1xuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvZGV2aWNlLXRva2Vuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVnaXN0ZXJEZXZpY2VUb2tlbihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPHZvaWQsIEVycm9yLCB7IHRva2VuOiBzdHJpbmc7IHBsYXRmb3JtOiAnaW9zJyB8ICdhbmRyb2lkJyB8ICd3ZWInIH0+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDx2b2lkLCBFcnJvciwgeyB0b2tlbjogc3RyaW5nOyBwbGF0Zm9ybTogJ2lvcycgfCAnYW5kcm9pZCcgfCAnd2ViJyB9PiB7XG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGEpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LnBvc3QoJy9hcGkvdjEvZGV2aWNlLXRva2VucycsIGRhdGEpO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogUmVtb3ZlIGRldmljZSB0b2tlblxuICpcbiAqIEBlbmRwb2ludCBERUxFVEUgL2FwaS92MS9kZXZpY2UtdG9rZW5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZW1vdmVEZXZpY2VUb2tlbihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPHZvaWQsIEVycm9yLCB7IHRva2VuOiBzdHJpbmcgfT4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PHZvaWQsIEVycm9yLCB7IHRva2VuOiBzdHJpbmcgfT4ge1xuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5kZWxldGUoJy9hcGkvdjEvZGV2aWNlLXRva2VucycsIHsgZGF0YSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orders Mutation Hooks
|
|
3
|
+
*
|
|
4
|
+
* TanStack Query hooks for order mutation operations.
|
|
5
|
+
*/
|
|
6
|
+
import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
7
|
+
import { OrderWithDetails } from '../queries/orders';
|
|
8
|
+
import type { Order, OrderStatus } from '../types';
|
|
9
|
+
export interface CartItem {
|
|
10
|
+
productId: string;
|
|
11
|
+
quantity: number;
|
|
12
|
+
}
|
|
13
|
+
export interface CreateOrderRequest {
|
|
14
|
+
spotId: string;
|
|
15
|
+
items: CartItem[];
|
|
16
|
+
notes?: string;
|
|
17
|
+
deliveryAddress?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface CreateOrderResponse extends Order {
|
|
20
|
+
items: Array<{
|
|
21
|
+
id: string;
|
|
22
|
+
productId: string;
|
|
23
|
+
productName: string;
|
|
24
|
+
quantity: number;
|
|
25
|
+
unitPrice: number;
|
|
26
|
+
totalPrice: number;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
export interface PaymentIntentResponse {
|
|
30
|
+
clientSecret: string;
|
|
31
|
+
paymentIntentId: string;
|
|
32
|
+
}
|
|
33
|
+
export interface CoinbaseChargeResponse {
|
|
34
|
+
chargeId: string;
|
|
35
|
+
chargeCode: string;
|
|
36
|
+
hostedUrl: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create a new order
|
|
40
|
+
*
|
|
41
|
+
* @endpoint POST /api/v1/orders
|
|
42
|
+
*/
|
|
43
|
+
export declare function useCreateOrder(options?: Omit<UseMutationOptions<CreateOrderResponse, Error, CreateOrderRequest>, 'mutationFn'>): UseMutationResult<CreateOrderResponse, Error, CreateOrderRequest>;
|
|
44
|
+
/**
|
|
45
|
+
* Create Stripe PaymentIntent for an order
|
|
46
|
+
*
|
|
47
|
+
* @endpoint POST /api/v1/payments/stripe/intent/{orderId}
|
|
48
|
+
*/
|
|
49
|
+
export declare function useCreateStripeIntent(options?: Omit<UseMutationOptions<PaymentIntentResponse, Error, string>, 'mutationFn'>): UseMutationResult<PaymentIntentResponse, Error, string>;
|
|
50
|
+
/**
|
|
51
|
+
* Create Coinbase Commerce charge for an order
|
|
52
|
+
*
|
|
53
|
+
* @endpoint POST /api/v1/payments/coinbase/charge/{orderId}
|
|
54
|
+
*/
|
|
55
|
+
export declare function useCreateCoinbaseCharge(options?: Omit<UseMutationOptions<CoinbaseChargeResponse, Error, string>, 'mutationFn'>): UseMutationResult<CoinbaseChargeResponse, Error, string>;
|
|
56
|
+
/**
|
|
57
|
+
* Update order status (seller action)
|
|
58
|
+
*
|
|
59
|
+
* @endpoint PUT /api/v1/orders/{orderId}/status
|
|
60
|
+
*/
|
|
61
|
+
export declare function useUpdateOrderStatus(options?: Omit<UseMutationOptions<OrderWithDetails, Error, {
|
|
62
|
+
orderId: string;
|
|
63
|
+
status: OrderStatus;
|
|
64
|
+
}>, 'mutationFn'>): UseMutationResult<OrderWithDetails, Error, {
|
|
65
|
+
orderId: string;
|
|
66
|
+
status: OrderStatus;
|
|
67
|
+
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Cancel an order (buyer action, only for pending orders)
|
|
70
|
+
*
|
|
71
|
+
* @endpoint POST /api/v1/orders/{orderId}/cancel
|
|
72
|
+
*/
|
|
73
|
+
export declare function useCancelOrder(options?: Omit<UseMutationOptions<OrderWithDetails, Error, string>, 'mutationFn'>): UseMutationResult<OrderWithDetails, Error, string>;
|