feat: contacts working
This commit is contained in:
@ -107,6 +107,13 @@ func main() {
|
|||||||
Data: note,
|
Data: note,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, contact := range image.Contacts {
|
||||||
|
dataTypes = append(dataTypes, DataType{
|
||||||
|
Type: "contact",
|
||||||
|
Data: contact,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jsonImages, err := json.Marshal(dataTypes)
|
jsonImages, err := json.Marshal(dataTypes)
|
||||||
@ -210,7 +217,7 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
userImage, err := imageModel.Process(r.Context(), uuid.MustParse(userId), model.Image{
|
userImage, err := imageModel.Process(r.Context(), userId, model.Image{
|
||||||
Image: image,
|
Image: image,
|
||||||
ImageName: imageName,
|
ImageName: imageName,
|
||||||
})
|
})
|
||||||
|
@ -39,6 +39,8 @@ type ImageWithProperties struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Notes []model.Notes
|
Notes []model.Notes
|
||||||
|
|
||||||
|
Contacts []model.Contacts
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUserIdFromImage(ctx context.Context, dbPool *sql.DB, imageId uuid.UUID) (uuid.UUID, error) {
|
func getUserIdFromImage(ctx context.Context, dbPool *sql.DB, imageId uuid.UUID) (uuid.UUID, error) {
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
|
import { A } from "@solidjs/router";
|
||||||
import { IconSearch } from "@tabler/icons-solidjs";
|
import { IconSearch } from "@tabler/icons-solidjs";
|
||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
import Fuse from "fuse.js";
|
import Fuse from "fuse.js";
|
||||||
import { For, createEffect, createResource, createSignal } from "solid-js";
|
import { For, createEffect, createResource, createSignal } from "solid-js";
|
||||||
import { SearchCardEvent } from "./components/search-card/SearchCardEvent";
|
import { SearchCardEvent } from "./components/search-card/SearchCardEvent";
|
||||||
import { SearchCardLocation } from "./components/search-card/SearchCardLocation";
|
import { SearchCardLocation } from "./components/search-card/SearchCardLocation";
|
||||||
import { UserImage, getUserImages } from "./network";
|
|
||||||
import { getCardSize } from "./utils/getCardSize";
|
|
||||||
import { SearchCardNote } from "./components/search-card/SearchCardNote";
|
import { SearchCardNote } from "./components/search-card/SearchCardNote";
|
||||||
import { A } from "@solidjs/router";
|
import { type UserImage, getUserImages } from "./network";
|
||||||
|
import { getCardSize } from "./utils/getCardSize";
|
||||||
|
import { SearchCardContact } from "./components/search-card/SearchCardContact";
|
||||||
|
|
||||||
const getCardComponent = (item: UserImage) => {
|
const getCardComponent = (item: UserImage) => {
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
@ -17,8 +18,8 @@ const getCardComponent = (item: UserImage) => {
|
|||||||
return <SearchCardEvent item={item} />;
|
return <SearchCardEvent item={item} />;
|
||||||
case "note":
|
case "note":
|
||||||
return <SearchCardNote item={item} />;
|
return <SearchCardNote item={item} />;
|
||||||
// case "Contact":
|
case "contact":
|
||||||
// return <SearchCardContact item={item} />;
|
return <SearchCardContact item={item} />;
|
||||||
// case "Website":
|
// case "Website":
|
||||||
// return <SearchCardWebsite item={item} />;
|
// return <SearchCardWebsite item={item} />;
|
||||||
// case "Note":
|
// case "Note":
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { Separator } from "@kobalte/core/separator";
|
import { Separator } from "@kobalte/core/separator";
|
||||||
|
|
||||||
import { IconUser } from "@tabler/icons-solidjs";
|
import { IconUser } from "@tabler/icons-solidjs";
|
||||||
import type { Contact } from "../../network/types";
|
import type { UserImage } from "../../network";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
item: Contact;
|
item: Extract<UserImage, { type: "contact" }>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SearchCardContact = ({ item }: Props) => {
|
export const SearchCardContact = ({ item }: Props) => {
|
||||||
@ -13,13 +13,15 @@ export const SearchCardContact = ({ item }: Props) => {
|
|||||||
return (
|
return (
|
||||||
<div class="absolute inset-0 p-3 bg-orange-50">
|
<div class="absolute inset-0 p-3 bg-orange-50">
|
||||||
<div class="grid grid-cols-[auto_20px] gap-1 mb-1">
|
<div class="grid grid-cols-[auto_20px] gap-1 mb-1">
|
||||||
<p class="text-sm text-neutral-900 font-bold">{data.name}</p>
|
<p class="text-sm text-neutral-900 font-bold">{data.Name}</p>
|
||||||
<IconUser size={20} class="text-neutral-500 mt-1" />
|
<IconUser size={20} class="text-neutral-500 mt-1" />
|
||||||
</div>
|
</div>
|
||||||
<p class="text-xs text-neutral-500">{data.phoneNumber}</p>
|
<p class="text-xs text-neutral-500">{data.PhoneNumber}</p>
|
||||||
|
<Separator class="my-2" />
|
||||||
|
<p class="text-xs text-neutral-500">{data.Email}</p>
|
||||||
<Separator class="my-2" />
|
<Separator class="my-2" />
|
||||||
<p class="text-xs text-neutral-500 line-clamp-2 overflow-hidden">
|
<p class="text-xs text-neutral-500 line-clamp-2 overflow-hidden">
|
||||||
{data.notes}
|
{data.Description}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -109,10 +109,16 @@ const noteDataType = strictObject({
|
|||||||
data: noteValidator,
|
data: noteValidator,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const contactDataType = strictObject({
|
||||||
|
type: literal("contact"),
|
||||||
|
data: contactValidator,
|
||||||
|
});
|
||||||
|
|
||||||
const dataTypeValidator = variant("type", [
|
const dataTypeValidator = variant("type", [
|
||||||
locationDataType,
|
locationDataType,
|
||||||
eventDataType,
|
eventDataType,
|
||||||
noteDataType,
|
noteDataType,
|
||||||
|
contactDataType,
|
||||||
]);
|
]);
|
||||||
const getUserImagesResponseValidator = array(dataTypeValidator);
|
const getUserImagesResponseValidator = array(dataTypeValidator);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user