Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 2 additions & 17 deletions nextjs-with-roq-auth/src/pages/api/chat/assign-tags.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { getServerSession, withAuth } from '@roq/nextjs';
import { faker } from '@faker-js/faker';
import { roqClient } from 'server/roq';
import { randomUUID } from 'crypto';
import { UserService } from '../../../server/services/user.service';

async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'POST') {
Expand All @@ -18,21 +17,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {

try {
// Create a user to chat with
const user = await roqClient.asSuperAdmin().createUser({
user: {
firstName: "System",
lastName: "Bot",
email: faker.internet.email(),
password: faker.internet.password(),
active: true,
isOptedIn: true,
customData: {
countryCode: "EN",
gender: faker.name.gender(),
},
reference: randomUUID(),
},
});
const user = await UserService.createUser();

// Create the conversation
const conv = await roqClient.asUser(session.roqUserId).createConversation({
Expand Down
19 changes: 2 additions & 17 deletions nextjs-with-roq-auth/src/pages/api/chat/create-1-1-conversation.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { getServerSession, withAuth } from '@roq/nextjs';
import { faker } from '@faker-js/faker';
import { roqClient } from 'server/roq';
import { randomUUID } from 'crypto';
import { UserService } from '../../../server/services/user.service';

async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'POST') {
Expand All @@ -18,21 +17,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {

try {
// Create a user to chat with
const user = await roqClient.asSuperAdmin().createUser({
user: {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
password: faker.internet.password(),
active: true,
isOptedIn: true,
customData: {
countryCode: "EN",
gender: faker.name.gender(),
},
reference: randomUUID(),
},
});
const user = await UserService.createUser();

// Create the conversation
const data = await roqClient.asUser(session.roqUserId).createConversation({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import type { NextApiRequest, NextApiResponse } from 'next';
import { getServerSession, withAuth } from '@roq/nextjs';
import { faker } from '@faker-js/faker';
import { roqClient } from 'server/roq';
import sampleSize from 'lodash/sampleSize';
import { randomUUID } from 'crypto';
import { UserService } from '../../../server/services/user.service';

async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'POST') {
Expand All @@ -15,46 +14,10 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
return res.status(200).json({ success: false });
}
try {
const users = sampleSize(
await (
await roqClient.asSuperAdmin().users({ limit: 10 })
).users?.data,
5
);

// Create a user to chat with
const userOne = await roqClient.asSuperAdmin().createUser({
user: {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
password: faker.internet.password(),
active: true,
isOptedIn: true,
customData: {
countryCode: "EN",
gender: faker.name.gender(),
},
reference: randomUUID(),
},
});

const userOne = await UserService.createUser();
// Create a second user to chat with
const userTwo = await roqClient.asSuperAdmin().createUser({
user: {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
password: faker.internet.password(),
active: true,
isOptedIn: true,
customData: {
countryCode: "EN",
gender: faker.name.gender(),
},
reference: randomUUID(),
},
});
const userTwo = await UserService.createUser();

const { groupName } = JSON.parse(req?.body);
// Create the conversation
Expand Down
21 changes: 2 additions & 19 deletions nextjs-with-roq-auth/src/pages/api/chat/send-message.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { getServerSession, withAuth } from '@roq/nextjs';
import { faker } from '@faker-js/faker';
import { roqClient } from 'server/roq';
import sampleSize from 'lodash/sampleSize';
import { randomUUID } from 'crypto';
import { UserService } from '../../../server/services/user.service';

async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'POST') {
Expand All @@ -22,22 +20,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
let conv
const convs = await roqClient.asUser(session.roqUserId).conversations();
if (!convs || convs.conversations?.data?.length === 0) {
const user = await roqClient.asSuperAdmin().createUser({
user: {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
password: faker.internet.password(),
active: true,
isOptedIn: true,
customData: {
countryCode: "EN",
gender: faker.name.gender(),
},
reference: randomUUID(),
},
});

const user = await UserService.createUser();
// Create the conversation
const data = await roqClient.asUser(session.roqUserId).createConversation({
conversation: {
Expand Down
27 changes: 2 additions & 25 deletions nextjs-with-roq-auth/src/pages/api/chat/send-system-message.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { getServerSession, withAuth } from '@roq/nextjs';
import { faker } from '@faker-js/faker';
import { roqClient } from 'server/roq';
import sampleSize from 'lodash/sampleSize';
import { randomUUID } from 'crypto';
import { UserService } from '../../../server/services/user.service';

async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'POST') {
Expand All @@ -18,29 +16,8 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
}

try {
const users = sampleSize(
await (
await roqClient.asSuperAdmin().users({ limit: 10 })
).users?.data,
5
);

// Create a user to chat with
const user = await roqClient.asSuperAdmin().createUser({
user: {
firstName: "System",
lastName: "Bot",
email: faker.internet.email(),
password: faker.internet.password(),
active: true,
isOptedIn: true,
customData: {
countryCode: "EN",
gender: faker.name.gender(),
},
reference: randomUUID(),
},
});
const user = await UserService.createUser();

// Create the conversation
const conv = await roqClient.asUser(session.roqUserId).createConversation({
Expand Down
29 changes: 6 additions & 23 deletions nextjs-with-roq-auth/src/pages/api/users/index.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,13 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { withAuth, getServerSession } from "@roq/nextjs";
import { roqClient } from "server/roq";
import { faker } from "@faker-js/faker";
import { randomUUID } from "crypto";
import type { NextApiRequest, NextApiResponse } from 'next';
import { withAuth } from '@roq/nextjs';
import { UserService } from '../../../server/services/user.service';

async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== "POST") {
res.status(405).send({ message: "Method not allowed" });
if (req.method !== 'POST') {
res.status(405).send({ message: 'Method not allowed' });
res.end();
}

const user = await roqClient.asSuperAdmin().createUser({
user: {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
password: faker.internet.password(),
active: true,
isOptedIn: true,
customData: {
countryCode: "EN",
gender: faker.name.gender(),
},
reference: randomUUID(),
},
});
const user = await UserService.createUser();
res.status(200).json({ user: user.createUser });
}

Expand Down
39 changes: 33 additions & 6 deletions nextjs-with-roq-auth/src/server/services/user.service.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
import { NotificationTypes } from "server/enums";
import { roqClient } from "server/roq";
import { PrismaClient } from "@prisma/client";
import { NotificationTypes } from 'server/enums';
import { roqClient } from 'server/roq';
import { PrismaClient } from '@prisma/client';
import { faker } from '@faker-js/faker';
import { randomUUID } from 'crypto';
import { UserCreateDto } from '@roq/nodejs/dist/src/generated/sdk';

const prisma = new PrismaClient();

export class UserService {
static async syncUser(
email: string,
roqUserId: string,
type: string = "user"
email: string,
roqUserId: string,
type: string = 'user'
) {
await prisma.user.upsert({
where: {
Expand Down Expand Up @@ -49,4 +52,28 @@ export class UserService {
},
});
}

static async createUser(createUser?: UserCreateDto) {
const isTenantActive = await roqClient.asSuperAdmin().isTenantActive();
const tenantId: string | undefined = isTenantActive ? (await roqClient.asSuperAdmin().tenants({
limit: 1,
}))?.tenants?.data?.[0]?.id : undefined;
const user = createUser ? { ...createUser, tenantId } : {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
password: faker.internet.password(),
active: true,
isOptedIn: true,
customData: {
countryCode: 'EN',
gender: faker.name.gender(),
},
reference: randomUUID(),
tenantId,
};
return roqClient.asSuperAdmin().createUser({
user
})
}
}