@flowselections/mailbox-orders 1.0.50 → 1.0.53
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.
- package/dist-lib/components/settings/MailboxFilterSettingsCard.d.ts.map +1 -1
- package/dist-lib/components/settings/MailboxFilterSettingsCard.js +13 -2
- package/dist-lib/integrations/supabase/types.d.ts +1256 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/mailbox-filter-settings.functions.d.ts +8 -0
- package/dist-lib/lib/mailbox-filter-settings.functions.d.ts.map +1 -1
- package/dist-lib/lib/mailbox-filter-settings.functions.js +11 -1
- package/dist-lib/lib/mailbox-ingest.server.d.ts +3 -2
- package/dist-lib/lib/mailbox-ingest.server.d.ts.map +1 -1
- package/dist-lib/lib/mailbox-ingest.server.js +16 -14
- package/dist-lib/lib/mailbox.functions.d.ts +1 -6
- package/dist-lib/lib/mailbox.functions.d.ts.map +1 -1
- package/dist-lib/lib/mailbox.functions.js +4 -28
- package/dist-lib/lib/pickup-locations.d.ts +17 -0
- package/dist-lib/lib/pickup-locations.d.ts.map +1 -0
- package/dist-lib/lib/pickup-locations.js +64 -0
- package/package.json +3 -2
|
@@ -41,6 +41,14 @@ export declare const saveMailboxFilterSettings: import("@tanstack/start-client-c
|
|
|
41
41
|
}, Promise<{
|
|
42
42
|
ok: true;
|
|
43
43
|
}>>;
|
|
44
|
+
/** Voegt alleen ontbrekende standaard-bestelwoorden toe; haalt niets weg. */
|
|
45
|
+
export declare const addStandardOrderKeywords: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
46
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
47
|
+
userId: string;
|
|
48
|
+
claims: import("@supabase/auth-js").User;
|
|
49
|
+
}, undefined, undefined, undefined>], undefined, Promise<{
|
|
50
|
+
added: number;
|
|
51
|
+
}>>;
|
|
44
52
|
/** Telling van openstaande voorstellen die het nieuwe filter als "geen bestelling" zou zien. Wijzigt niets. */
|
|
45
53
|
export declare const countLikelyFakeProposals: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
46
54
|
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailbox-filter-settings.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-filter-settings.functions.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;GA2CjC,CAAC;AAEL,eAAO,MAAM,yBAAyB;;;;8CAEZ,OAAO;;;;;;;;;;;;;;;;;;;;;GAyB7B,CAAC;AAEL,+GAA+G;AAC/G,eAAO,MAAM,wBAAwB;;;;;;;;;GA+BjC,CAAC;AAIL,eAAO,MAAM,aAAa;;;;;;GAUtB,CAAC;AAYL,eAAO,MAAM,YAAY;;;;8CAEC,OAAO;;;;;;;;;;GAW7B,CAAC;AAEL,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;;;GAM7B,CAAC;AAEL,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC;AA4BxE,kFAAkF;AAClF,eAAO,MAAM,WAAW;;;;8CAEE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqB7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"mailbox-filter-settings.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-filter-settings.functions.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;GA2CjC,CAAC;AAEL,eAAO,MAAM,yBAAyB;;;;8CAEZ,OAAO;;;;;;;;;;;;;;;;;;;;;GAyB7B,CAAC;AAEL,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB;;;;;;GAOjC,CAAC;AAEL,+GAA+G;AAC/G,eAAO,MAAM,wBAAwB;;;;;;;;;GA+BjC,CAAC;AAIL,eAAO,MAAM,aAAa;;;;;;GAUtB,CAAC;AAYL,eAAO,MAAM,YAAY;;;;8CAEC,OAAO;;;;;;;;;;GAW7B,CAAC;AAEL,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;;;GAM7B,CAAC;AAEL,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC;AA4BxE,kFAAkF;AAClF,eAAO,MAAM,WAAW;;;;8CAEE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqB7B,CAAC"}
|
|
@@ -85,7 +85,7 @@ export const saveMailboxFilterSettings = createServerFn({ method: "POST" })
|
|
|
85
85
|
await admin.rpc("mailbox_ensure_defaults").then(() => { }, () => { });
|
|
86
86
|
const { error } = await admin
|
|
87
87
|
.from("mailbox_filter_settings")
|
|
88
|
-
.update({ ...rest, updated_at: new Date().toISOString() })
|
|
88
|
+
.update({ ...rest, updated_at: new Date().toISOString(), door_gebruiker_opgeslagen_at: new Date().toISOString() })
|
|
89
89
|
.eq("singleton", true);
|
|
90
90
|
if (error)
|
|
91
91
|
throw new Error(error.message);
|
|
@@ -97,6 +97,16 @@ export const saveMailboxFilterSettings = createServerFn({ method: "POST" })
|
|
|
97
97
|
}
|
|
98
98
|
return { ok: true };
|
|
99
99
|
});
|
|
100
|
+
/** Voegt alleen ontbrekende standaard-bestelwoorden toe; haalt niets weg. */
|
|
101
|
+
export const addStandardOrderKeywords = createServerFn({ method: "POST" })
|
|
102
|
+
.middleware([requireSupabaseAuth])
|
|
103
|
+
.handler(async () => {
|
|
104
|
+
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
105
|
+
const { data, error } = await supabaseAdmin.rpc("mailbox_add_standaard_woorden");
|
|
106
|
+
if (error)
|
|
107
|
+
throw new Error(error.message);
|
|
108
|
+
return { added: Number(data?.toegevoegd ?? 0) };
|
|
109
|
+
});
|
|
100
110
|
/** Telling van openstaande voorstellen die het nieuwe filter als "geen bestelling" zou zien. Wijzigt niets. */
|
|
101
111
|
export const countLikelyFakeProposals = createServerFn({ method: "GET" })
|
|
102
112
|
.middleware([requireSupabaseAuth])
|
|
@@ -76,8 +76,9 @@ export declare function resolveDeliveryLocation(admin: AdminClient, customerId:
|
|
|
76
76
|
source: "mail" | "gln" | "vast";
|
|
77
77
|
} | null>;
|
|
78
78
|
/**
|
|
79
|
-
* Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie
|
|
80
|
-
*
|
|
79
|
+
* Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie.
|
|
80
|
+
* Bron volgt de Floriday-koppeling (zie loadPickupLocations). Kan de koppeling niet
|
|
81
|
+
* worden gecontroleerd, dan blijft het veld leeg en kiest de gebruiker zelf.
|
|
81
82
|
*/
|
|
82
83
|
export declare function resolvePickupLocation(admin: AdminClient, aiValue: unknown): Promise<{
|
|
83
84
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailbox-ingest.server.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-ingest.server.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAS9D,OAAO,EAAsC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAkD,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mailbox-ingest.server.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-ingest.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ import { classifyMessage, extractLatestPart } from "./mailbox-filter.js";
|
|
|
14
14
|
import { normalizeUnitKind, toPlants, unitPricePerPlant } from "./mailbox-units.js";
|
|
15
15
|
import { matchLine, rankCandidates } from "./mailbox-match.js";
|
|
16
16
|
import { classifyEventFolder } from "./mailbox-folders.js";
|
|
17
|
+
import { loadPickupLocations } from "./pickup-locations.js";
|
|
17
18
|
/**
|
|
18
19
|
* Ladingdragers komen live uit de Logistics Engine — nooit cachen, nooit een
|
|
19
20
|
* eigen lijst bijhouden.
|
|
@@ -457,27 +458,28 @@ export async function resolveDeliveryLocation(admin, customerId, aiValue, mailTe
|
|
|
457
458
|
return primary.length === 1 ? { id: String(primary[0].id), source: "vast" } : null;
|
|
458
459
|
}
|
|
459
460
|
/**
|
|
460
|
-
* Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie
|
|
461
|
-
*
|
|
461
|
+
* Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie.
|
|
462
|
+
* Bron volgt de Floriday-koppeling (zie loadPickupLocations). Kan de koppeling niet
|
|
463
|
+
* worden gecontroleerd, dan blijft het veld leeg en kiest de gebruiker zelf.
|
|
462
464
|
*/
|
|
463
465
|
export async function resolvePickupLocation(admin, aiValue) {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
return
|
|
471
|
-
}
|
|
466
|
+
let own;
|
|
467
|
+
try {
|
|
468
|
+
own = await loadPickupLocations(admin);
|
|
469
|
+
}
|
|
470
|
+
catch (e) {
|
|
471
|
+
console.warn("[mailbox] afhaallocatie niet bepaald:", e instanceof Error ? e.message : e);
|
|
472
|
+
return null;
|
|
473
|
+
}
|
|
472
474
|
if (own.length === 0)
|
|
473
475
|
return null;
|
|
474
476
|
if (typeof aiValue === "string" && aiValue) {
|
|
475
|
-
const hit = own.find((
|
|
477
|
+
const hit = own.find((l) => l.id === aiValue);
|
|
476
478
|
if (hit)
|
|
477
|
-
return { id:
|
|
479
|
+
return { id: hit.id, primary: false };
|
|
478
480
|
}
|
|
479
|
-
const main = own.find((
|
|
480
|
-
return main ? { id:
|
|
481
|
+
const main = own.find((l) => l.is_default) ?? own[0];
|
|
482
|
+
return main ? { id: main.id, primary: true } : null;
|
|
481
483
|
}
|
|
482
484
|
/** Schrijft velden + regels van een AI-parse weg. */
|
|
483
485
|
async function writeParsedDetails(admin, proposalId, parsed, lines) {
|
|
@@ -333,12 +333,7 @@ export declare const listPickupLocations: import("@tanstack/start-client-core").
|
|
|
333
333
|
userId: string;
|
|
334
334
|
claims: import("@supabase/auth-js").User;
|
|
335
335
|
}, undefined, undefined, undefined>], undefined, Promise<{
|
|
336
|
-
items:
|
|
337
|
-
id: string;
|
|
338
|
-
name: any;
|
|
339
|
-
is_default: boolean;
|
|
340
|
-
sort_order: number;
|
|
341
|
-
}[];
|
|
336
|
+
items: import("./pickup-locations.js").PickupLocation[];
|
|
342
337
|
}>>;
|
|
343
338
|
export declare const listCarriersForPicker: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
344
339
|
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailbox.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox.functions.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mailbox.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { classifyVerkoopRefusal, existingOrderOrFilter, defaultNeedsSticker, checkLinePrices, zeroPriceFlag } from "./verkoop-order.js";
|
|
2
2
|
import { toActiveMailboxStatus } from "./mailbox-active.js";
|
|
3
|
+
import { loadPickupLocations } from "./pickup-locations.js";
|
|
3
4
|
// Server functions voor de Mailbox-bestellingen module
|
|
4
5
|
import { createServerFn } from "@tanstack/react-start";
|
|
5
6
|
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
|
|
@@ -874,37 +875,12 @@ export const listDeliveryLocationsForCustomer = createServerFn({ method: "POST"
|
|
|
874
875
|
.order("name");
|
|
875
876
|
return { items: Array.isArray(rows) ? rows : [] };
|
|
876
877
|
});
|
|
877
|
-
// Onze eigen bedrijfslocaties (tuinen / afhaallocaties)
|
|
878
|
-
//
|
|
879
|
-
// locaties). Naam valt terug op het adres wanneer het name-veld leeg is (bv. "Zijdeweg 6A").
|
|
878
|
+
// Onze eigen bedrijfslocaties (tuinen / afhaallocaties): met Floriday-koppeling de
|
|
879
|
+
// Floriday warehouses, anders de eigen afhaallocaties uit de Verkoop-module. Zie loadPickupLocations.
|
|
880
880
|
export const listPickupLocations = createServerFn({ method: "GET" })
|
|
881
881
|
.middleware([requireSupabaseAuth])
|
|
882
882
|
.handler(async ({ context }) => {
|
|
883
|
-
const
|
|
884
|
-
.from("floriday_warehouses_cache")
|
|
885
|
-
.select("floriday_id, name, data")
|
|
886
|
-
.eq("is_deleted", false);
|
|
887
|
-
const rows = Array.isArray(data) ? data : [];
|
|
888
|
-
const items = rows
|
|
889
|
-
.filter((r) => {
|
|
890
|
-
const d = r?.data ?? {};
|
|
891
|
-
return d?.hasAccess === true && d?.isExternal === false;
|
|
892
|
-
})
|
|
893
|
-
.map((r) => {
|
|
894
|
-
const addr = r?.data?.location?.address?.addressLine;
|
|
895
|
-
const city = r?.data?.location?.address?.city;
|
|
896
|
-
const nameRaw = typeof r.name === "string" ? r.name.trim() : "";
|
|
897
|
-
const label = nameRaw.length > 0
|
|
898
|
-
? nameRaw
|
|
899
|
-
: [addr, city].filter(Boolean).join(", ") || "(naamloos)";
|
|
900
|
-
return {
|
|
901
|
-
id: r.floriday_id,
|
|
902
|
-
name: label,
|
|
903
|
-
is_default: r?.data?.isDefault === true,
|
|
904
|
-
sort_order: 0,
|
|
905
|
-
};
|
|
906
|
-
})
|
|
907
|
-
.sort((a, b) => (a.is_default === b.is_default ? a.name.localeCompare(b.name, "nl") : a.is_default ? -1 : 1));
|
|
883
|
+
const items = await loadPickupLocations(context.supabase);
|
|
908
884
|
return { items };
|
|
909
885
|
});
|
|
910
886
|
export const listCarriersForPicker = createServerFn({ method: "GET" })
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
export type PickupSource = "floriday" | "eigen";
|
|
3
|
+
export type PickupLocation = {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
is_default: boolean;
|
|
7
|
+
sort_order: number;
|
|
8
|
+
source: PickupSource;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* true = actieve Floriday-koppeling (get_active_floriday_connection_public uit de
|
|
12
|
+
* Authenticatie-module). Ontbreekt de functie, dan geen koppeling. Elke andere fout
|
|
13
|
+
* gooit: niet gokken, anders komen orders op de verkeerde locatie.
|
|
14
|
+
*/
|
|
15
|
+
export declare function hasActiveFloridayConnection(client: SupabaseClient<any>): Promise<boolean>;
|
|
16
|
+
export declare function loadPickupLocations(client: SupabaseClient<any>): Promise<PickupLocation[]>;
|
|
17
|
+
//# sourceMappingURL=pickup-locations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pickup-locations.d.ts","sourceRoot":"","sources":["../../src/lib/pickup-locations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAS/F;AAQD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA4ChG"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* true = actieve Floriday-koppeling (get_active_floriday_connection_public uit de
|
|
3
|
+
* Authenticatie-module). Ontbreekt de functie, dan geen koppeling. Elke andere fout
|
|
4
|
+
* gooit: niet gokken, anders komen orders op de verkeerde locatie.
|
|
5
|
+
*/
|
|
6
|
+
export async function hasActiveFloridayConnection(client) {
|
|
7
|
+
const { data, error } = await client.rpc("get_active_floriday_connection_public");
|
|
8
|
+
if (error) {
|
|
9
|
+
const missing = error.code === "42883" || error.code === "PGRST202";
|
|
10
|
+
if (missing)
|
|
11
|
+
return false;
|
|
12
|
+
throw new Error(`Floriday-koppeling kon niet worden gecontroleerd: ${error.message}`);
|
|
13
|
+
}
|
|
14
|
+
const rows = Array.isArray(data) ? data : data ? [data] : [];
|
|
15
|
+
return rows.some((r) => typeof r?.id === "string" && r.id.length > 0);
|
|
16
|
+
}
|
|
17
|
+
// Onze eigen bedrijfslocaties (tuinen / afhaallocaties). De bron hangt af van de koppeling:
|
|
18
|
+
// - Floriday gekoppeld: alleen de Floriday warehouses cache, eigen warehouses
|
|
19
|
+
// (hasAccess=true en isExternal=false, dus geen KLOK/veiling locaties); hoofdlocatie = isDefault.
|
|
20
|
+
// - Niet gekoppeld: alleen verkoop_pickup_locations (handmatig ingesteld in de Verkoop-module)
|
|
21
|
+
// waar is_active; hoofdlocatie = is_default. Ontbreekt de tabel, dan telt dat als leeg.
|
|
22
|
+
// Naam valt terug op het adres wanneer het name-veld leeg is (bv. "Zijdeweg 6A").
|
|
23
|
+
export async function loadPickupLocations(client) {
|
|
24
|
+
const label = (name, addr, city) => {
|
|
25
|
+
const nameRaw = typeof name === "string" ? name.trim() : "";
|
|
26
|
+
return nameRaw.length > 0
|
|
27
|
+
? nameRaw
|
|
28
|
+
: [addr, city].filter((x) => typeof x === "string" && x.trim()).join(", ") || "(naamloos)";
|
|
29
|
+
};
|
|
30
|
+
let items;
|
|
31
|
+
if (await hasActiveFloridayConnection(client)) {
|
|
32
|
+
const { data } = await client
|
|
33
|
+
.from("floriday_warehouses_cache")
|
|
34
|
+
.select("floriday_id, name, data")
|
|
35
|
+
.eq("is_deleted", false);
|
|
36
|
+
items = (Array.isArray(data) ? data : [])
|
|
37
|
+
.filter((r) => {
|
|
38
|
+
const d = r?.data ?? {};
|
|
39
|
+
return d?.hasAccess === true && d?.isExternal === false;
|
|
40
|
+
})
|
|
41
|
+
.map((r) => ({
|
|
42
|
+
id: String(r.floriday_id),
|
|
43
|
+
name: label(r.name, r?.data?.location?.address?.addressLine, r?.data?.location?.address?.city),
|
|
44
|
+
is_default: r?.data?.isDefault === true,
|
|
45
|
+
sort_order: 0,
|
|
46
|
+
source: "floriday",
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const { data, error } = await client
|
|
51
|
+
.from("verkoop_pickup_locations")
|
|
52
|
+
.select("id, name, address_line, city, is_default, is_active")
|
|
53
|
+
.eq("is_active", true);
|
|
54
|
+
// Fout (bv. tabel bestaat niet in dit project) → geen eigen locaties.
|
|
55
|
+
items = (!error && Array.isArray(data) ? data : []).map((r) => ({
|
|
56
|
+
id: String(r.id),
|
|
57
|
+
name: label(r.name, r.address_line, r.city),
|
|
58
|
+
is_default: r.is_default === true,
|
|
59
|
+
sort_order: 0,
|
|
60
|
+
source: "eigen",
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
return items.sort((a, b) => a.is_default === b.is_default ? a.name.localeCompare(b.name, "nl") : a.is_default ? -1 : 1);
|
|
64
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowselections/mailbox-orders",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.53",
|
|
4
4
|
"private": false,
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"@flowselections/core": "*",
|
|
38
|
+
"@flowselections/e-mail-authenticatie-module": "^1.0.8",
|
|
38
39
|
"@tanstack/react-query": "^5.0.0",
|
|
39
40
|
"@tanstack/react-router": "^1.0.0",
|
|
40
41
|
"@tanstack/react-start": "^1.0.0",
|
|
@@ -44,13 +45,13 @@
|
|
|
44
45
|
"sonner": "^2.0.0"
|
|
45
46
|
},
|
|
46
47
|
"dependencies": {
|
|
47
|
-
"@flowselections/e-mail-authenticatie-module": "^1.0.8",
|
|
48
48
|
"@supabase/supabase-js": "^2.108.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@cloudflare/vite-plugin": "^1.25.5",
|
|
52
52
|
"@eslint/js": "^9.32.0",
|
|
53
53
|
"@flowselections/core": "1.0.35",
|
|
54
|
+
"@flowselections/e-mail-authenticatie-module": "^1.0.8",
|
|
54
55
|
"@lovable.dev/vite-tanstack-config": "2.26.5",
|
|
55
56
|
"@rsbuild/core": "^1.0.0",
|
|
56
57
|
"@tailwindcss/vite": "^4.2.1",
|