jamalsoueidan
jamalsoueidan
CCConvex Community
Created by jamalsoueidan on 12/4/2024 in #support-community
nextjs issue
After starting a new fresh project using nextjs, i tried to install convex-helpers, it throws this error when installing convex-helpers,.
npm install convex-helpers@latest
npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: nextjs-example-token@0.1.0 npm ERR! Found: react@19.0.0-rc-66855b96-20241106 npm ERR! node_modules/react npm ERR! react@"19.0.0-rc-66855b96-20241106" from the root project npm ERR! peerOptional react@"^17.0.2 ^18.0.0 ^19.0.0-0" from convex@1.17.3 npm ERR! node_modules/convex npm ERR! convex@"^1.17.3" from the root project npm ERR! peer convex@"^1.13.0" from convex-helpers@0.1.65 npm ERR! node_modules/convex-helpers npm ERR! convex-helpers@"0.1.65" from the root project npm ERR! 2 more (react-dom, @clerk/clerk-react) npm ERR! npm ERR! Could not resolve dependency: npm ERR! peerOptional react@"^17.0.2 || ^18.0.0" from convex-helpers@0.1.65 npm ERR! node_modules/convex-helpers npm ERR! convex-helpers@"0.1.65" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
29 replies
CCConvex Community
Created by jamalsoueidan on 12/2/2024 in #support-community
Dashboard functions search bug
If you try to search for functions in dashboard/functions, and its not found, you can like go back to the functions list? Even if you actually click on Files and then Functions, it still show no functions in this deployment! Please fix.
4 replies
CCConvex Community
Created by jamalsoueidan on 11/28/2024 in #support-community
How to preload data with Remix?
I understand in nextjs you can preload data with preloadQuery, but in remix it terminate the server, I also need to send the logged in user to convex, im using convex auth. Error: Environment variable NEXT_PUBLIC_CONVEX_URL is not set. I tried to add this env variable, but didnt work, in the past it did. I also think adding the data to useQuery would be great...
const {preloadedData} = useLoaderData<typeof loader>();
const data= useQuery(api.resumes.get, {
id: params.id as Id<"resumes">,
}, {preloadedData} ); // << this would be great, this way data is not undefined
const {preloadedData} = useLoaderData<typeof loader>();
const data= useQuery(api.resumes.get, {
id: params.id as Id<"resumes">,
}, {preloadedData} ); // << this would be great, this way data is not undefined
But how to fix this problem in remix? so i can remove the code below 😦
if (!data) {
return <>Loading data</>;
}
if (!data) {
return <>Loading data</>;
}
Many thanks
11 replies
CCConvex Community
Created by jamalsoueidan on 11/25/2024 in #support-community
convex aggregate documentation
No description
11 replies
CCConvex Community
Created by jamalsoueidan on 11/21/2024 in #support-community
Search for subdomains in string field
Hi I have encountered an issue with the full-text search functionality. When searching for emails by subdomain, the system seems to remove special characters (like @ and .) and splits the subdomain into multiple words. This behaviour results in incorrect matches and makes it impossible to accurately find all emails with a specific subdomain. For example: Searching for @email.norwegianreward.com incorrectly splits it into email, norwegianreward and com This is problematic for use cases where exact subdomain matches are required. Accurate full-text search for subdomains is a very basic and essential feature for applications handling email data. Could you advise on how to resolve this issue or if there are any planned updates to improve the full-text search capabilities? search: { from: "@email.norwegianreward.com" } results: [ { From: "newsletter@email.norwegianreward.com" }, { From: "noreply@email.openai.com" }, //not interested { From: "info@email.home.saxo" },//not interested { From: "info@email.home.saxo" },//not interested ]
15 replies
CCConvex Community
Created by jamalsoueidan on 9/12/2024 in #support-community
OptimisticUpdate
I'm using action to first send a post to third party service and then inserting into DB, the question is how to use the optimistic on the frontend, to insert into the localstorage? //getData
const { results, status, loadMore } = usePaginatedQuery(
api.message.paginate,
{ conversation: conversationId as Id<"conversation"> },
{ initialNumItems: 25 }
);
const { results, status, loadMore } = usePaginatedQuery(
api.message.paginate,
{ conversation: conversationId as Id<"conversation"> },
{ initialNumItems: 25 }
);
//sendData (here how do i insert into the local storage for api.message.paginate)
const convex = useConvex();
convex.action(api.message.send, {
conversation: conversationId,
type: "text",
text: {
body: "hej med dig",
},
timestamp: 1,
});
const convex = useConvex();
convex.action(api.message.send, {
conversation: conversationId,
type: "text",
text: {
body: "hej med dig",
},
timestamp: 1,
});
Many thanks
3 replies
CCConvex Community
Created by jamalsoueidan on 9/11/2024 in #support-community
create a method to query on demand?
how do i create a action method that can query the database on demand to be used on the frontend, i tried to use internalquery with a action, but the action didnt allow me to return the internal query? I need to use it in the frontend on demand...
5 replies
CCConvex Community
Created by jamalsoueidan on 9/10/2024 in #support-community
union of two types
how do i typeguard in convex? in typescript i usually do type guards to handle this situtation, how to do that in convex? function isText(invoice: args ): invoice is object1 { return invoice.type === "text"; }
export const webhooks = internalAction({
args: {
object: v.string(),
entry: v.array(
v.object({
id: v.string(),
changes: v.array(
v.object({
field: v.string(),
value: v.object({
messaging_product: v.string(),
metadata: v.object({
phone_number_id: v.string(),
display_phone_number: v.string(),
}),
contacts: v.array(
v.object({
profile: v.object({
name: v.string(),
}),
wa_id: v.string(),
})
),
messages: v.array(
v.union(
v.object({
from: v.string(),
id: v.string(),
timestamp: v.string(),
type: v.literal("text"),
text: v.object({
body: v.string(),
preview_url: v.optional(v.boolean()),
}),
}),
v.object({
from: v.string(),
id: v.string(),
timestamp: v.string(),
type: v.literal("image"),
image: v.object({
mime_type: v.string(),
sha256: v.string(),
id: v.string(),
}),
})
..
},
handler: async (ctx, args) => {
..
const type = value.messages[0].type;

if (type === "text") {
await ctx.runAction(internal.datatypes.text.run, args);
} ...
await ctx.runMutation(internal.data.insert, args);
},
});
export const webhooks = internalAction({
args: {
object: v.string(),
entry: v.array(
v.object({
id: v.string(),
changes: v.array(
v.object({
field: v.string(),
value: v.object({
messaging_product: v.string(),
metadata: v.object({
phone_number_id: v.string(),
display_phone_number: v.string(),
}),
contacts: v.array(
v.object({
profile: v.object({
name: v.string(),
}),
wa_id: v.string(),
})
),
messages: v.array(
v.union(
v.object({
from: v.string(),
id: v.string(),
timestamp: v.string(),
type: v.literal("text"),
text: v.object({
body: v.string(),
preview_url: v.optional(v.boolean()),
}),
}),
v.object({
from: v.string(),
id: v.string(),
timestamp: v.string(),
type: v.literal("image"),
image: v.object({
mime_type: v.string(),
sha256: v.string(),
id: v.string(),
}),
})
..
},
handler: async (ctx, args) => {
..
const type = value.messages[0].type;

if (type === "text") {
await ctx.runAction(internal.datatypes.text.run, args);
} ...
await ctx.runMutation(internal.data.insert, args);
},
});
20 replies