diff --git a/apps/frontend/src/components/new-launch/providers/mewe/mewe.provider.tsx b/apps/frontend/src/components/new-launch/providers/mewe/mewe.provider.tsx
index 8aadca6c..82e27c38 100644
--- a/apps/frontend/src/components/new-launch/providers/mewe/mewe.provider.tsx
+++ b/apps/frontend/src/components/new-launch/providers/mewe/mewe.provider.tsx
@@ -8,12 +8,25 @@ import { FC } from 'react';
import { MeweDto } from '@gitroom/nestjs-libraries/dtos/posts/providers-settings/mewe.dto';
import { MeweGroupSelect } from '@gitroom/frontend/components/new-launch/providers/mewe/mewe.group.select';
import { useSettings } from '@gitroom/frontend/components/launches/helpers/use.values';
+import { Select } from '@gitroom/react/form/select';
+import { useWatch } from 'react-hook-form';
const MeweComponent: FC = () => {
const form = useSettings();
+ const postType = useWatch({ control: form.control, name: 'postType' });
+
return (
-
+
+ {postType === 'group' && (
+
+ )}
);
};
diff --git a/libraries/nestjs-libraries/src/dtos/posts/providers-settings/mewe.dto.ts b/libraries/nestjs-libraries/src/dtos/posts/providers-settings/mewe.dto.ts
index f1039bae..ca4d9647 100644
--- a/libraries/nestjs-libraries/src/dtos/posts/providers-settings/mewe.dto.ts
+++ b/libraries/nestjs-libraries/src/dtos/posts/providers-settings/mewe.dto.ts
@@ -1,12 +1,19 @@
-import { IsDefined, IsString, MinLength } from 'class-validator';
+import { IsIn, IsOptional, IsString, MinLength, ValidateIf } from 'class-validator';
import { JSONSchema } from 'class-validator-jsonschema';
export class MeweDto {
+ @IsIn(['timeline', 'group'])
+ @JSONSchema({
+ description: 'Where to post: timeline or group',
+ })
+ postType: 'timeline' | 'group';
+
+ @ValidateIf((o) => o.postType === 'group')
@MinLength(1)
- @IsDefined()
@IsString()
@JSONSchema({
description: 'Group must be an id',
})
- group: string;
+ @IsOptional()
+ group?: string;
}
diff --git a/libraries/nestjs-libraries/src/integrations/social/mewe.provider.ts b/libraries/nestjs-libraries/src/integrations/social/mewe.provider.ts
index 55640527..07e2e675 100644
--- a/libraries/nestjs-libraries/src/integrations/social/mewe.provider.ts
+++ b/libraries/nestjs-libraries/src/integrations/social/mewe.provider.ts
@@ -239,6 +239,7 @@ export class MeweProvider extends SocialAbstract implements SocialProvider {
integration: Integration
): Promise {
const [firstPost] = postDetails;
+ const postType = firstPost.settings.postType || 'group';
const groupId = firstPost.settings.group;
// Upload photos if present (exclude videos)
@@ -257,15 +258,17 @@ export class MeweProvider extends SocialAbstract implements SocialProvider {
postBody.uploadedPhotoIds = uploadedPhotoIds;
}
+ const postUrl =
+ postType === 'timeline'
+ ? `${this.meweHost}/api/dev/me/post`
+ : `${this.meweHost}/api/dev/group/${groupId}/post`;
+
// MeWe post endpoint may return 204 (no content), so use raw fetch
- const postResponse = await fetch(
- `${this.meweHost}/api/dev/group/${groupId}/post`,
- {
- method: 'POST',
- headers: this.authHeaders(accessToken),
- body: JSON.stringify(postBody),
- }
- );
+ const postResponse = await fetch(postUrl, {
+ method: 'POST',
+ headers: this.authHeaders(accessToken),
+ body: JSON.stringify(postBody),
+ });
if (!postResponse.ok) {
const errorText = await postResponse.text();
@@ -285,11 +288,13 @@ export class MeweProvider extends SocialAbstract implements SocialProvider {
postId = makeId(12);
}
+ const releaseURL = `${this.meweHost}/post/show/${postId}`;
+
return [
{
id: firstPost.id,
postId,
- releaseURL: `${this.meweHost}/group/${groupId}`,
+ releaseURL,
status: 'success',
},
];