mirror of
https://github.com/vercel/commerce.git
synced 2025-05-13 13:17:51 +00:00
commit b10e930476d8bbe82f679f3ae8ed44cea733898f Merge: a2c34aa 8531476 Author: Sammii <sammii.h@icloud.com> Date: Wed Apr 24 20:05:09 2024 +0100 Merge pull request #1 from Sammii-HK/feat/restyle-store Feat/restyle store commit 85314765721447f5612cb59b7e668653606e7b7b Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 20:03:12 2024 +0100 responsive design app page carousel commit d5563a7355c2581c29ebf3f11799e1047c0c29dd Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 19:57:47 2024 +0100 updating mobile carousel tile size commit 9976d0d427ea92dab510bface5da9a4e89feabee Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 19:30:07 2024 +0100 updating combox import commit f6a365df8239d26d5feb37cf53d43632ab7c90c4 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 19:16:08 2024 +0100 styling label price commit cf89e3b0648bb07ed038f872183bd7ecea064df0 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 19:08:16 2024 +0100 styling accordians and drop downs commit 49f3776ba8894d5fd2aa6b2fea0632f73d6ae093 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 18:53:14 2024 +0100 updating search and carousel styling commit 7666a25f918a1b53a088dd9240077af5b9013712 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 18:37:29 2024 +0100 styling product description commit b8280101ad367abfe48aed4fee8ef32ed1fd5d67 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 18:18:11 2024 +0100 removing `-full` from all rounded elements commit 77480edd79327898aa2c417d34d231db1d593736 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 18:15:27 2024 +0100 styling cart component commit 3ec0c4d5679b20c66442e5002225cbefe927a13e Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 18:06:53 2024 +0100 updating styling commit efcab218934934edea629406b823fd2b2ac3d193 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 18:06:43 2024 +0100 updating carousel for correct types commit b14934af8489a6294f1c47a3a41d40d0a7565550 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:57:31 2024 +0100 styling tile commit 0c72e76bad994317d5e39faedfc4aade9a368fe7 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:56:50 2024 +0100 styling label commit ca24a30543ddfbdd345ac405b14e0541a9af1020 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:54:54 2024 +0100 update main app layout for dark view commit 57c1c4cac9a15c2091f652f53f7bb85a6a5b613a Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:52:53 2024 +0100 commenting out weight li on description content commit d2f0ac2041b04117e24db0316b470646489aca07 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:52:02 2024 +0100 updating carousel to new style commit 545717006d7f25f36e71b67873d01316aeeafcf9 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:50:55 2024 +0100 updating getAllLiveProducts to handle no param commit 0bf97ecdf69b4f7a4aa00c090e09e613fa1aba8a Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:50:39 2024 +0100 styling and adjusting footer & navbar commit 18200b4e848affe01ca9014bdf8ac841ce176114 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:50:00 2024 +0100 updating cart to bag commit 82c30cdda8d38b3111b539a34127155bb82612d5 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:48:32 2024 +0100 SKUs page file check commit e88a45b9d51096b3250062708d5ef1a49138258c Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:47:30 2024 +0100 updatibng Prose import path commit 5e81519f983e58758d865b2905f279f34afb67a4 Author: Samantha Kellow <sammii.h@icloud.com> Date: Wed Apr 24 17:45:58 2024 +0100 updating app page metadata commit 9c9a5c035b245d8811a601ba2dd134c5c5f124d7 Author: Samantha Kellow <sammii.h@icloud.com> Date: Tue Apr 23 21:25:05 2024 +0100 making borders muted commit 8a40e08e41a7fdad172e5ffaebb7f791ec66f4e5 Author: Samantha Kellow <sammii.h@icloud.com> Date: Tue Apr 23 20:37:35 2024 +0100 moving ui components to own folder 🧹
116 lines
4.2 KiB
TypeScript
116 lines
4.2 KiB
TypeScript
import { createProductSKUs } from 'lib/helpers/skus';
|
|
import { getProducts } from 'lib/shopify';
|
|
|
|
import { Dropbox, DropboxResponse, files } from 'dropbox';
|
|
|
|
// how to get new Dropbox refresh token
|
|
// 1. go to https://www.dropbox.com/oauth2/authorize?client_id=YOUR_APP_KEY&token_access_type=offline&response_type=code&redirect_uri=https://www.dropbox.com/1/oauth2/display_token
|
|
// 2. copy code from URL after redirect
|
|
// 3. curl
|
|
// curl -X POST https://api.dropboxapi.com/oauth2/token \
|
|
// -d 'grant_type=authorization_code' \
|
|
// -d 'code=CODE_HERE' \
|
|
// -d 'client_id=CLIENT_ID' \
|
|
// -d 'client_secret=CLIENT_SECRET' \
|
|
// -d 'redirect_uri=https://www.dropbox.com/1/oauth2/display_token'
|
|
|
|
|
|
export default async function SKUCheckPage() {
|
|
const products = await getProducts({});
|
|
|
|
let dbxFiles: DropboxResponse<files.ListFolderResult> | undefined;
|
|
let dbxError: string | undefined;
|
|
|
|
try {
|
|
const dbx = new Dropbox({
|
|
clientId: process.env.DROPBOX_APP_KEY,
|
|
clientSecret: process.env.DROPBOX_APP_SECRET,
|
|
refreshToken: process.env.DROPBOX_REFRESH_TOKEN
|
|
});
|
|
|
|
dbxFiles = await dbx.filesListFolder({
|
|
path: '/scape squared/004 print ready - print files'
|
|
});
|
|
|
|
// sabotage?
|
|
// dbxFiles.result.entries = dbxFiles.result.entries.filter(file => file.name !== "SCSQ300262_NECK.png");
|
|
} catch (e) {
|
|
dbxError = e + ""
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
{products.map((product) => {
|
|
const skus = createProductSKUs(product.title);
|
|
|
|
if (!skus) return <div key={product.id} className="m-10 bg-red-300 ">SKU error for product {product.title}</div>
|
|
|
|
// sabotage?
|
|
// product.variants[3]!.sku = 'SCSQ10001_STTU781_M_C002_B_NT';
|
|
|
|
const productCode = skus[0]!.split('_')[0]
|
|
const productBase = productCode!.slice(0, (productCode!.length -1))
|
|
|
|
const productFiles = dbxFiles?.result.entries
|
|
.filter((file) => file.name.startsWith(productBase!))
|
|
|
|
const productFileNames = productFiles?.map(file => file.name);
|
|
|
|
const sizeDigits = ["1", "2", "3"];
|
|
const sideSuffixes = ["_NECK.png", "_BACK.png"];
|
|
|
|
const expectedFiles = sizeDigits.flatMap((sizeDigit) =>
|
|
sideSuffixes.flatMap((sideSuffix) => productBase + sizeDigit + sideSuffix)
|
|
);
|
|
|
|
const missingFiles = expectedFiles.filter(expected => !productFileNames?.includes(expected));
|
|
const extraFiles = productFileNames?.filter(filename => !expectedFiles.includes(filename));
|
|
|
|
return (
|
|
<div key={product.id} className="mt-10 lg:grid lg:grid-cols-12 gap-x-4 gap-y-1">
|
|
<h1 className="text-2xl lg:col-span-10 lg:col-start-3">{product.title}</h1>
|
|
<div
|
|
className={
|
|
'mb-4 lg:col-span-4 lg:col-start-3 rounded ' +
|
|
(missingFiles?.length > 0 ? 'bg-amber-300' : '')
|
|
}
|
|
>
|
|
Dropbox:{' '}
|
|
{missingFiles.length === 0
|
|
? '✅ All expected files found'
|
|
: '⛔️ Missing files: ' + missingFiles.join(', ')}
|
|
{extraFiles && <div className='text-sm'>(Extra files: {extraFiles.join(", ")})</div>}
|
|
{dbxError}
|
|
</div>
|
|
{product.variants.map((variant, i) => (
|
|
<>
|
|
<div className="lg:col-span-1 lg:col-start-2 text-right">
|
|
{variant.selectedOptions[0]?.value}
|
|
</div>
|
|
<div
|
|
className={
|
|
'tabular-nums lg:col-span-4 rounded ' +
|
|
(variant.sku === skus[i] ? '' : 'bg-amber-300')
|
|
}
|
|
>
|
|
{variant.sku.split('').map((letter, lIdx) => (
|
|
<span className="relative">
|
|
{letter}
|
|
{letter === skus[i]![lIdx] ? null : (
|
|
<div className="absolute left-0 right-0 top-0 bottom-0 bg-red-500 animate-ping rounded" />
|
|
)}
|
|
</span>
|
|
))}{' '}
|
|
(Shopify)
|
|
<br />
|
|
{skus[i]} (Expected)
|
|
</div>
|
|
</>
|
|
))}
|
|
</div>
|
|
);
|
|
})}
|
|
</div>
|
|
);
|
|
}
|