@amityco/ts-sdk 7.9.2-5367a1e.0 → 7.9.2-9906a74f.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.
Files changed (69) hide show
  1. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/content.d.ts +11 -2
  2. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/content.d.ts.map +1 -1
  3. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/content.js.map +1 -1
  4. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/file.d.ts +3 -1
  5. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/file.d.ts.map +1 -1
  6. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/file.js +1 -0
  7. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/file.js.map +1 -1
  8. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts +1 -0
  9. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts.map +1 -1
  10. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.js.map +1 -1
  11. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/fileRepository/api/index.d.ts +1 -0
  12. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/fileRepository/api/index.d.ts.map +1 -1
  13. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/fileRepository/api/index.js +1 -0
  14. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/fileRepository/api/index.js.map +1 -1
  15. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/fileRepository/api/uploadAudio.d.ts +17 -0
  16. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/fileRepository/api/uploadAudio.d.ts.map +1 -0
  17. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/fileRepository/api/uploadAudio.js +47 -0
  18. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/fileRepository/api/uploadAudio.js.map +1 -0
  19. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts +1 -1
  20. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createAudioPost.d.ts +30 -0
  21. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createAudioPost.d.ts.map +1 -0
  22. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createAudioPost.js +43 -0
  23. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createAudioPost.js.map +1 -0
  24. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.d.ts +1 -0
  25. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.d.ts.map +1 -1
  26. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.js +1 -0
  27. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.js.map +1 -1
  28. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/linkedObject/postLinkedObject.d.ts.map +1 -1
  29. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/linkedObject/postLinkedObject.js +7 -1
  30. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/linkedObject/postLinkedObject.js.map +1 -1
  31. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/postTypePredicate.d.ts +1 -0
  32. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/postTypePredicate.d.ts.map +1 -1
  33. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/postTypePredicate.js +6 -0
  34. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/postTypePredicate.js.map +1 -1
  35. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/utils/tests/dummy/comment.d.ts +1 -1
  36. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
  37. package/dist/@types/domains/content.d.ts +11 -2
  38. package/dist/@types/domains/content.d.ts.map +1 -1
  39. package/dist/@types/domains/file.d.ts +3 -1
  40. package/dist/@types/domains/file.d.ts.map +1 -1
  41. package/dist/@types/domains/post.d.ts +1 -0
  42. package/dist/@types/domains/post.d.ts.map +1 -1
  43. package/dist/fileRepository/api/index.d.ts +1 -0
  44. package/dist/fileRepository/api/index.d.ts.map +1 -1
  45. package/dist/fileRepository/api/uploadAudio.d.ts +17 -0
  46. package/dist/fileRepository/api/uploadAudio.d.ts.map +1 -0
  47. package/dist/index.cjs.js +98 -1
  48. package/dist/index.esm.js +98 -1
  49. package/dist/index.umd.js +2 -2
  50. package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts +1 -1
  51. package/dist/postRepository/api/createAudioPost.d.ts +30 -0
  52. package/dist/postRepository/api/createAudioPost.d.ts.map +1 -0
  53. package/dist/postRepository/api/index.d.ts +1 -0
  54. package/dist/postRepository/api/index.d.ts.map +1 -1
  55. package/dist/utils/linkedObject/postLinkedObject.d.ts.map +1 -1
  56. package/dist/utils/postTypePredicate.d.ts +1 -0
  57. package/dist/utils/postTypePredicate.d.ts.map +1 -1
  58. package/dist/utils/tests/dummy/comment.d.ts +1 -1
  59. package/package.json +1 -1
  60. package/src/@types/domains/content.ts +11 -0
  61. package/src/@types/domains/file.ts +5 -0
  62. package/src/@types/domains/post.ts +1 -0
  63. package/src/fileRepository/api/index.ts +1 -0
  64. package/src/fileRepository/api/uploadAudio.ts +61 -0
  65. package/src/postRepository/api/createAudioPost.ts +60 -0
  66. package/src/postRepository/api/index.ts +1 -0
  67. package/src/utils/linkedObject/postLinkedObject.ts +7 -0
  68. package/src/utils/postTypePredicate.ts +9 -0
  69. package/tsconfig.tsbuildinfo +1 -1
@@ -3,7 +3,7 @@ export declare const getSubChannelMessagePreviewWithUser: (subChannel: Amity.Sub
3
3
  user: Amity.InternalUser | undefined;
4
4
  messagePreviewId: string;
5
5
  subChannelName: string;
6
- data?: string | Record<string, unknown> | Amity.ContentDataText | Amity.ContentDataFile | Amity.ContentDataImage | Amity.ContentDataVideo | Amity.ContentDataPoll | Amity.ContentDataStream | Amity.ContentDataClip | undefined;
6
+ data?: string | Record<string, unknown> | Amity.ContentDataText | Amity.ContentDataFile | Amity.ContentDataImage | Amity.ContentDataVideo | Amity.ContentDataAudio | Amity.ContentDataPoll | Amity.ContentDataStream | Amity.ContentDataClip | undefined;
7
7
  dataType?: any;
8
8
  channelId: string;
9
9
  subChannelId: string;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ```js
3
+ * import { PostRepository } from '@amityco/ts-sdk'
4
+ * const created = await PostRepository.createAudioPost({
5
+ * targetType: 'user',
6
+ * targetId: 'foobar',
7
+ * data: { text: 'Audio Post', title: 'Audio Post Title' },
8
+ * attachments: [{ type: 'audio', fileId: 'fileId123'}]
9
+ * }))
10
+ * ```
11
+ *
12
+ * Creates an {@link Amity.Post}
13
+ *
14
+ * @param bundle The data necessary to create a new {@link Amity.Post}
15
+ * @returns The newly created {@link Amity.Post}
16
+ *
17
+ * @category Post API
18
+ * @async
19
+ */
20
+ export declare const createAudioPost: <T extends string = "audio">(bundle: Pick<Amity.Post<T>, "targetId" | "targetType"> & Partial<Pick<Amity.Post<T>, "tags" | "metadata" | "mentionees" | "hashtags">> & {
21
+ data: {
22
+ text?: string;
23
+ title?: string;
24
+ };
25
+ attachments: {
26
+ type: T;
27
+ fileId: Amity.File['fileId'];
28
+ }[];
29
+ }) => Promise<Amity.Cached<Amity.Post>>;
30
+ //# sourceMappingURL=createAudioPost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAudioPost.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/createAudioPost.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe;UAGhB;QACJ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;;;gBAGS,UAAU,CAAC,QAAQ,CAAC;;MAGjC,QAAQ,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,CAkBlC,CAAC"}
@@ -10,4 +10,5 @@ export * from './flagPost';
10
10
  export * from './unflagPost';
11
11
  export * from './isPostFlaggedByMe';
12
12
  export * from './createClipPost';
13
+ export * from './createAudioPost';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAE3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAE3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/postLinkedObject.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB,SAAU,MAAM,YAAY,KAAG,MAAM,IAwFjE,CAAC"}
1
+ {"version":3,"file":"postLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/postLinkedObject.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,gBAAgB,SAAU,MAAM,YAAY,KAAG,MAAM,IA8FjE,CAAC"}
@@ -4,4 +4,5 @@ export declare function isAmityVideoPost(post: Amity.InternalPost): post is Amit
4
4
  export declare function isAmityLivestreamPost(post: Amity.InternalPost): post is Amity.Post<'liveStream'>;
5
5
  export declare function isAmityPollPost(post: Amity.InternalPost): post is Amity.Post<'poll'>;
6
6
  export declare function isAmityClipPost(post: Amity.InternalPost): post is Amity.Post<'clip'>;
7
+ export declare function isAmityAudioPost(post: Amity.InternalPost): post is Amity.Post<'audio'>;
7
8
  //# sourceMappingURL=postTypePredicate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postTypePredicate.d.ts","sourceRoot":"","sources":["../../src/utils/postTypePredicate.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAOtF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAQtF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAOhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF"}
1
+ {"version":3,"file":"postTypePredicate.d.ts","sourceRoot":"","sources":["../../src/utils/postTypePredicate.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAOtF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAQtF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAOhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAOpF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAOtF"}
@@ -23,7 +23,7 @@ export declare const generateComment: (params?: Partial<Amity.InternalComment>)
23
23
  referenceType: Amity.CommentReferenceType;
24
24
  dataType?: any;
25
25
  dataTypes?: any[] | undefined;
26
- data?: string | Record<string, unknown> | Amity.ContentDataText | Amity.ContentDataFile | Amity.ContentDataImage | Amity.ContentDataVideo | Amity.ContentDataPoll | Amity.ContentDataStream | Amity.ContentDataClip | undefined;
26
+ data?: string | Record<string, unknown> | Amity.ContentDataText | Amity.ContentDataFile | Amity.ContentDataImage | Amity.ContentDataVideo | Amity.ContentDataAudio | Amity.ContentDataPoll | Amity.ContentDataStream | Amity.ContentDataClip | undefined;
27
27
  metadata?: Record<string, any> | undefined;
28
28
  flagCount: number;
29
29
  hashFlag: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/ts-sdk",
3
- "version": "7.9.2-5367a1e.0",
3
+ "version": "7.9.2-9906a74f.0",
4
4
  "license": "CC-BY-ND-4.0",
5
5
  "author": "amity.co <developers@amity.co> (https://amity.co)",
6
6
  "description": "Amity Social Cloud Typescript SDK",
@@ -33,6 +33,7 @@ declare global {
33
33
  | 'json'
34
34
  | 'liveStream'
35
35
  | 'clip'
36
+ | 'audio'
36
37
  | string;
37
38
 
38
39
  type ContentFeedType = ValueOf<typeof ContentFeedType>;
@@ -71,6 +72,14 @@ declare global {
71
72
  displayMode?: Amity.ClipDisplayMode;
72
73
  };
73
74
 
75
+ type ContentDataAudio = {
76
+ fileId: Amity.File<'audio'>['fileId'];
77
+ fileURL: URL;
78
+ accessType: Amity.FileAccessType;
79
+ altText?: string;
80
+ attributes: { [key: string]: any };
81
+ };
82
+
74
83
  type ContentDataPoll = {
75
84
  pollId: Amity.Poll['pollId'];
76
85
  };
@@ -87,6 +96,8 @@ declare global {
87
96
  ? ContentDataImage
88
97
  : T extends 'video'
89
98
  ? ContentDataVideo
99
+ : T extends 'audio'
100
+ ? ContentDataAudio
90
101
  : T extends 'poll'
91
102
  ? ContentDataPoll
92
103
  : T extends 'liveStream'
@@ -3,6 +3,7 @@ export const FileType = Object.freeze({
3
3
  IMAGE: 'image',
4
4
  VIDEO: 'video',
5
5
  CLIP: 'clip',
6
+ AUDIO: 'audio',
6
7
  });
7
8
 
8
9
  export const VideoResolution = Object.freeze({
@@ -58,6 +59,8 @@ declare global {
58
59
 
59
60
  type ClipMetadata = Record<string, never>;
60
61
 
62
+ type AudioMetadata = Record<string, never>;
63
+
61
64
  type MetadataFor<T extends FileType> = T extends 'file'
62
65
  ? FileMetadata
63
66
  : T extends 'image'
@@ -66,6 +69,8 @@ declare global {
66
69
  ? VideoMetadata
67
70
  : T extends 'clip'
68
71
  ? ClipMetadata
72
+ : T extends 'audio'
73
+ ? AudioMetadata
69
74
  : never;
70
75
 
71
76
  type File<T extends FileType = any> = Amity.FilePayload<T>;
@@ -88,6 +88,7 @@ declare global {
88
88
  getPollInfo: () => Amity.Poll | undefined;
89
89
  getLivestreamInfo: () => Amity.Stream | undefined;
90
90
  getClipInfo: () => Amity.File<'clip'> | undefined;
91
+ getAudioInfo: () => Amity.File<'audio'> | undefined;
91
92
  };
92
93
 
93
94
  type Post<T extends PostContentType = any> = Amity.InternalPost<T> & Amity.PostLinkObject;
@@ -6,3 +6,4 @@ export * from './uploadVideo';
6
6
  export * from './uploadImage';
7
7
  export * from './updateAltText';
8
8
  export * from './uploadClip';
9
+ export * from './uploadAudio';
@@ -0,0 +1,61 @@
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
+ import { ingestInCache } from '~/cache/api/ingestInCache';
3
+ import GlobalFileAccessType from '~/client/utils/GlobalFileAccessType';
4
+
5
+ /* begin_public_function
6
+ id: file.upload.audio
7
+ */
8
+ /**
9
+ * ```js
10
+ * import { FileRepository } from '@amityco/ts-sdk'
11
+ * const uploaded = await FileRepository.uploadAudio(formData, onProgress)
12
+ * ```
13
+ *
14
+ * Creates an {@link Amity.File<'audio'>}
15
+ *
16
+ * @param formData The data necessary to create a new {@link Amity.File<'audio'>}
17
+ * @param onProgress The callback to track the upload progress
18
+ * @returns The newly created {@link Amity.File<'audio'>}
19
+ *
20
+ * @category File API
21
+ * @async
22
+ */
23
+ export const uploadAudio = async (
24
+ formData: FormData,
25
+ onProgress?: (percent: number) => void,
26
+ ): Promise<Amity.Cached<Amity.File<'audio'>[]>> => {
27
+ const client = getActiveClient();
28
+ client.log('file/uploadAudio', formData);
29
+
30
+ const file = formData.get('file') as File;
31
+
32
+ if (!file) throw new Error('The formData object must have a `file` key with audio file.');
33
+
34
+ const accessType = GlobalFileAccessType.getInstance().getFileAccessType();
35
+
36
+ formData.append('accessType', accessType);
37
+
38
+ formData.append('preferredFilename', file.name);
39
+
40
+ const headers = { 'content-type': 'multipart/form-data' };
41
+
42
+ const { data } = await client.http.post<Amity.CreateFilePayload<'audio'>>(
43
+ '/api/v4/audios',
44
+ formData,
45
+ {
46
+ headers,
47
+ onUploadProgress({ loaded, total = 100 }) {
48
+ onProgress?.(Math.round((loaded * 100) / total));
49
+ },
50
+ },
51
+ );
52
+
53
+ const cachedAt = client.cache && Date.now();
54
+ if (client.cache) ingestInCache({ files: data }, { cachedAt });
55
+
56
+ return {
57
+ data,
58
+ cachedAt,
59
+ };
60
+ };
61
+ /* end_public_function */
@@ -0,0 +1,60 @@
1
+ import { fireEvent } from '~/core/events';
2
+ import { postLinkedObject } from '~/utils/linkedObject/postLinkedObject';
3
+ import { getActiveClient } from '~/client/api/activeClient';
4
+ import { ingestInCache } from '~/cache/api/ingestInCache';
5
+ import { preparePostPayload } from '../utils/payload';
6
+
7
+ /* begin_public_function
8
+ id: post.create.audio_post
9
+ */
10
+ /**
11
+ * ```js
12
+ * import { PostRepository } from '@amityco/ts-sdk'
13
+ * const created = await PostRepository.createAudioPost({
14
+ * targetType: 'user',
15
+ * targetId: 'foobar',
16
+ * data: { text: 'Audio Post', title: 'Audio Post Title' },
17
+ * attachments: [{ type: 'audio', fileId: 'fileId123'}]
18
+ * }))
19
+ * ```
20
+ *
21
+ * Creates an {@link Amity.Post}
22
+ *
23
+ * @param bundle The data necessary to create a new {@link Amity.Post}
24
+ * @returns The newly created {@link Amity.Post}
25
+ *
26
+ * @category Post API
27
+ * @async
28
+ */
29
+ export const createAudioPost = async <T extends Amity.PostContentType = 'audio'>(
30
+ bundle: Pick<Amity.Post<T>, 'targetType' | 'targetId'> &
31
+ Partial<Pick<Amity.Post<T>, 'metadata' | 'mentionees' | 'tags' | 'hashtags'>> & {
32
+ data: {
33
+ text?: string;
34
+ title?: string;
35
+ };
36
+ attachments: {
37
+ type: T;
38
+ fileId: Amity.File['fileId'];
39
+ }[];
40
+ },
41
+ ): Promise<Amity.Cached<Amity.Post>> => {
42
+ const client = getActiveClient();
43
+ client.log('post/createAudioPost', bundle);
44
+
45
+ const { data: payload } = await client.http.post<Amity.PostPayload>('/api/v4/posts', bundle);
46
+
47
+ fireEvent('post.created', payload);
48
+
49
+ const data = preparePostPayload(payload);
50
+
51
+ const cachedAt = client.cache && Date.now();
52
+
53
+ if (client.cache) ingestInCache(data, { cachedAt });
54
+
55
+ return {
56
+ data: postLinkedObject(data?.posts[0]),
57
+ cachedAt,
58
+ };
59
+ };
60
+ /* end_public_function */
@@ -15,3 +15,4 @@ export * from './unflagPost';
15
15
  export * from './isPostFlaggedByMe';
16
16
 
17
17
  export * from './createClipPost';
18
+ export * from './createAudioPost';
@@ -9,6 +9,7 @@ import {
9
9
  isAmityPollPost,
10
10
  isAmityVideoPost,
11
11
  isAmityClipPost,
12
+ isAmityAudioPost,
12
13
  } from '../postTypePredicate';
13
14
  import { shallowClone } from '../shallowClone';
14
15
  import { streamLinkedObject } from './streamLinkedObject';
@@ -101,5 +102,11 @@ export const postLinkedObject = (post: Amity.InternalPost): Amity.Post => {
101
102
  ? pullFromCache<Amity.File<'clip'>>(['file', 'get', post?.data?.fileId])?.data
102
103
  : undefined;
103
104
  },
105
+
106
+ getAudioInfo(): Amity.File<'audio'> | undefined {
107
+ return isAmityAudioPost(post)
108
+ ? pullFromCache<Amity.File<'audio'>>(['file', 'get', post?.data?.fileId])?.data
109
+ : undefined;
110
+ },
104
111
  });
105
112
  };
@@ -52,3 +52,12 @@ export function isAmityClipPost(post: Amity.InternalPost): post is Amity.Post<'c
52
52
  post.dataType === 'clip'
53
53
  );
54
54
  }
55
+
56
+ export function isAmityAudioPost(post: Amity.InternalPost): post is Amity.Post<'audio'> {
57
+ return !!(
58
+ post.data &&
59
+ typeof post.data !== 'string' &&
60
+ 'fileId' in post.data &&
61
+ post.dataType === 'audio'
62
+ );
63
+ }