diff --git a/components/filters/SearchValueMarketplaceFilter.vue b/components/filters/SearchValueMarketplaceFilter.vue
index b65c3e8..f2b75f9 100644
--- a/components/filters/SearchValueMarketplaceFilter.vue
+++ b/components/filters/SearchValueMarketplaceFilter.vue
@@ -8,12 +8,22 @@
:label="$t('searchValue')"
/>
-
+
()
+const isEbay = ref(false)
const resolvedMarketplaceOptions = ref(detectLocationNA() ? usMarketplaces : marketplaces)
const selectedMarketplaces = ref([])
+watch(isEbay, (newVal) => {
+ if (newVal) {
+ model.value!.marketplace = 'Ebay'
+ }
+})
+
watch(() => model.value!.marketplace, () => {
+ if (model.value?.marketplace == 'Ebay') {
+ isEbay.value = true
+ return
+ }
+
selectedMarketplaces.value = []
model.value?.marketplace.split(',').map((condidtionName) => {
const item = resolvedMarketplaceOptions.value.find(m => m.value == condidtionName)
diff --git a/components/ui/Checkbox.vue b/components/ui/Checkbox.vue
index 37bba63..18de6c3 100644
--- a/components/ui/Checkbox.vue
+++ b/components/ui/Checkbox.vue
@@ -13,7 +13,7 @@
>
diff --git a/components/ui/MultiSelect.vue b/components/ui/MultiSelect.vue
index 07fc474..b951595 100644
--- a/components/ui/MultiSelect.vue
+++ b/components/ui/MultiSelect.vue
@@ -21,10 +21,12 @@
{{ selectedLabels }}
@@ -87,6 +89,7 @@ const props = defineProps<{
label?: string
hoverText?: string
labelAria?: string
+ disabled?: boolean
}>()
const emit = defineEmits<{
@@ -102,7 +105,7 @@ watch(() => model, () => {
// create the string that is displayed on the button eq. Ebay, AutoScout24
const selectedLabels = computed(() => {
- if (selectedItems.value.length === 0) return ''
+ if (selectedItems.value.length === 0) return t('selectOption')
const rawSelectedItems = selectedItems.value.map(item => toRaw(item)) // Convert Proxies to raw objects
const selected = props.options
.filter(option => rawSelectedItems.some(selectedItem =>
diff --git a/constants/CreateFilterConstants.ts b/constants/CreateFilterConstants.ts
index e2cb761..9acbad9 100644
--- a/constants/CreateFilterConstants.ts
+++ b/constants/CreateFilterConstants.ts
@@ -6,7 +6,6 @@ export interface Options {
export const marketplaces: Options[] = [
{ value: 'all', label: 'allMarket' },
- { value: 'Ebay', label: 'Ebay' },
{ value: 'Kleinanzeigen', label: 'Kleinanzeigen' },
{ value: 'AutoScout24', label: 'autoScoutMarketplace' },
{ value: 'Facebook', label: 'facebookMarketplace', premium: true },
@@ -16,7 +15,6 @@ export const marketplaces: Options[] = [
export const usMarketplaces: Options[] = [
{ value: 'all', label: 'allMarket' },
- { value: 'Ebay', label: 'Ebay' },
{ value: 'Facebook', label: 'facebookMarketplace', premium: true },
{ value: 'Craigslist', label: 'craigslistMarketplace' },
]
diff --git a/locales/de.json b/locales/de.json
index ee96ad3..80320f4 100644
--- a/locales/de.json
+++ b/locales/de.json
@@ -670,5 +670,7 @@
"lowFuzzy": "Niedrige Toleranz",
"mediumFuzzy": "Mittlere Toleranz",
"fuzzyInfo": "Anzahl der Buchstaben, die sich von deinem Suchwert unterscheiden dürfen: (z.B. Auto -> Auot, entspricht Niedriger Toleranz) \n Vorsicht! Suchwerte mit Toleranz können andere Produkte mit einschließen. Diese Einstellung ist wegen des Rechenaufwands nur für zahlende Nutzer verfügbar.",
- "hasBasicPlanRestriction": "Das kostenlose Abo ist auf eine Suche alle 6 Stunden beschränkt"
+ "hasBasicPlanRestriction": "Das kostenlose Abo ist auf eine Suche alle 6 Stunden beschränkt",
+ "useEbayMarketplace": "Ebay verwenden",
+ "selectOption": "Option auswählen"
}
diff --git a/locales/en.json b/locales/en.json
index 4fc84ad..0467563 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -670,5 +670,7 @@
"singleLetterChanged": "Single Letter added/removed",
"lowFuzzy": "Light Fuzziness",
"mediumFuzzy": "Medium Fuzziness",
- "fuzzyInfo": "Amount of letters that can be different from your search value: ( Switch -> Swtich ) \n NOTE: changing this value can cause your search to match other products. This setting is restricted to paid tiers"
+ "fuzzyInfo": "Amount of letters that can be different from your search value: ( Switch -> Swtich ) \n NOTE: changing this value can cause your search to match other products. This setting is restricted to paid tiers",
+ "useEbayMarketplace": "Use Ebay",
+ "selectOption": "Select an option"
}
diff --git a/pages/filters/create.vue b/pages/filters/create.vue
index 07684c3..8b62418 100755
--- a/pages/filters/create.vue
+++ b/pages/filters/create.vue
@@ -202,7 +202,6 @@ async function loadEditParam() {
}
case 'IncludePlatforms': {
// construct the selected marketplaces from the string to test if it is all marketplaces selected
- console.log(item.value)
const constuctedArray = constructOptionsFromString(item.value ?? '')
if (valididateAllMarketplace(constuctedArray)) {
filter.value.marketplace = 'all'
diff --git a/src/api-client/sdk.gen.ts b/src/api-client/sdk.gen.ts
index bbfb4d8..855f541 100644
--- a/src/api-client/sdk.gen.ts
+++ b/src/api-client/sdk.gen.ts
@@ -1,7 +1,7 @@
// This file is auto-generated by @hey-api/openapi-ts
import type { Options as ClientOptions, Composable, TDataShape, Client } from '@hey-api/client-nuxt';
-import type { LoginFirebaseData, LoginFirebaseResponse, LoginFirebaseError, GetFiltersData, GetFiltersResponse, GetFiltersError, GetOptionsData, GetOptionsResponse, GetOptionsError, ReportMatchData, ReportMatchResponse, ReportMatchError, AddFilterData, AddFilterResponse, AddFilterError, DeleteFilterData, DeleteFilterError, DeleteFilterWithTokenData, DeleteFilterWithTokenError, GetFilterByTokenData, GetFilterByTokenResponse, GetFilterByTokenError, TestFilterData, TestFilterResponse, TestFilterError, GetLocationData, GetLocationResponse, GetLocationError, GetCountryData, GetCountryResponse, GetCountryError, GetMatchesData, GetMatchesResponse, GetMatchesError, GetStatsData, GetStatsResponse, GetStatsError, GetListingData, GetListingResponse, GetListingError, GetSubscriptionData, GetSubscriptionResponse, GetSubscriptionError, SubscribeData, SubscribeResponse, SubscribeError, CancelSubscriptionData, CancelSubscriptionResponse, CancelSubscriptionError, DoRedirectData, DoRedirectError, GetInfoData, GetInfoResponse, GetInfoError, CreateLinkData, CreateLinkResponse, CreateLinkError, ListLinksData, ListLinksResponse, ListLinksError, GetLinkData, GetLinkResponse, GetLinkError, UseLinkData, UseLinkError, GetMeData, GetMeResponse, GetMeError, UpdateMeData, UpdateMeResponse, UpdateMeError } from './types.gen';
+import type { LoginFirebaseData, LoginFirebaseResponse, LoginFirebaseError, GetFiltersData, GetFiltersResponse, GetFiltersError, GetOptionsData, GetOptionsResponse, GetOptionsError, ReportMatchData, ReportMatchResponse, ReportMatchError, AddFilterData, AddFilterResponse, AddFilterError, DeleteFilterData, DeleteFilterError, DeleteFilterWithTokenData, DeleteFilterWithTokenError, GetFilterByTokenData, GetFilterByTokenResponse, GetFilterByTokenError, TestFilterData, TestFilterResponse, TestFilterError, GetLocationData, GetLocationResponse, GetLocationError, GetCountryData, GetCountryResponse, GetCountryError, GetFlipsData, GetFlipsResponse, GetFlipsError, GetMatchesData, GetMatchesResponse, GetMatchesError, GetStatsData, GetStatsResponse, GetStatsError, GetListingData, GetListingResponse, GetListingError, GetSubscriptionData, GetSubscriptionResponse, GetSubscriptionError, SubscribeData, SubscribeResponse, SubscribeError, CancelSubscriptionData, CancelSubscriptionResponse, CancelSubscriptionError, DoRedirectData, DoRedirectError, GetInfoData, GetInfoResponse, GetInfoError, CreateLinkData, CreateLinkResponse, CreateLinkError, ListLinksData, ListLinksResponse, ListLinksError, GetLinkData, GetLinkResponse, GetLinkError, UseLinkData, UseLinkError, GetMeData, GetMeResponse, GetMeError, UpdateMeData, UpdateMeResponse, UpdateMeError } from './types.gen';
import { client as _heyApiClient } from './client.gen';
export type Options = ClientOptions & {
@@ -180,6 +180,19 @@ export const getCountry = (options: Options) => {
+ return (options.client ?? _heyApiClient).get({
+ security: [
+ {
+ name: 'Authorization',
+ type: 'apiKey'
+ }
+ ],
+ url: '/api/flips/{category}',
+ ...options
+ });
+};
+
export const getMatches = (options: Options) => {
return (options.client ?? _heyApiClient).get({
security: [
diff --git a/src/api-client/types.gen.ts b/src/api-client/types.gen.ts
index ac0da7c..ab3b9b0 100644
--- a/src/api-client/types.gen.ts
+++ b/src/api-client/types.gen.ts
@@ -35,6 +35,17 @@ export type FilterOptions = {
export type FilterType = 'Options' | 'NumberRange' | 'Text' | 'Date' | 'Radius' | 'Bool' | 'MultiSelect';
+export type Flip = {
+ category?: string | null;
+ listing?: Listing;
+ serializedListing?: string | null;
+ medianPrice?: number | null;
+ potentialProfit?: number | null;
+ serializedSells?: string | null;
+ foundAt?: string | null;
+ recentSells?: Array | null;
+};
+
export type InviteLink = {
userId?: string;
id?: string;
@@ -125,6 +136,14 @@ export type ResultReport = {
export type SearchState = 'None' | 'Disabled' | 'DisabledError';
+export type SoldFor = {
+ platform?: Platform;
+ key?: string | null;
+ price?: number | null;
+ date?: string | null;
+ id?: string | null;
+};
+
export type StoredListing = {
platform?: Platform;
priceKind?: PriceKind;
@@ -752,6 +771,61 @@ export type GetCountryResponses = {
export type GetCountryResponse = GetCountryResponses[keyof GetCountryResponses];
+export type GetFlipsData = {
+ body?: never;
+ path: {
+ category: string;
+ };
+ query?: {
+ limit?: number;
+ };
+ url: '/api/flips/{category}';
+};
+
+export type GetFlipsErrors = {
+ /**
+ * Bad Request
+ */
+ 400: {
+ /**
+ * Human readable id for this kind of error
+ */
+ slug?: string;
+ /**
+ * More info about the error, may sometimes be sufficient to display to user
+ */
+ message?: string;
+ };
+ /**
+ * Internal Server Error
+ */
+ 500: {
+ /**
+ * Human readable id for this kind of error
+ */
+ slug?: string;
+ /**
+ * Unknown error occured
+ */
+ message?: string;
+ /**
+ * Id for the error report with this id
+ */
+ trace?: string;
+ };
+};
+
+export type GetFlipsError = GetFlipsErrors[keyof GetFlipsErrors];
+
+export type GetFlipsResponses = {
+ /**
+ * OK
+ */
+ 200: Array;
+};
+
+export type GetFlipsResponse = GetFlipsResponses[keyof GetFlipsResponses];
+
export type GetMatchesData = {
body?: never;
path?: never;