fix merge conflicts
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "medusa-plugin-contentful",
|
||||
"version": "1.1.4",
|
||||
"version": "1.1.4-alpha.7+739b7b3c",
|
||||
"description": "Contentful plugin for Medusa Commerce",
|
||||
"main": "index.js",
|
||||
"repository": {
|
||||
@@ -43,5 +43,5 @@
|
||||
"medusa-test-utils": "^1.1.3",
|
||||
"redis": "^3.0.2"
|
||||
},
|
||||
"gitHead": "0646bd395a6056657cb0aa93c13699c4a9dbbcdd"
|
||||
"gitHead": "739b7b3cc5ff31aa7a15637db2000e645c7597b1"
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ const checkContentTypes = async (container) => {
|
||||
if (!product) {
|
||||
throw Error("Content type: `product` is missing in Contentful")
|
||||
}
|
||||
|
||||
if (!variant) {
|
||||
throw Error("Content type: `productVariant` is missing in Contentful")
|
||||
}
|
||||
|
||||
@@ -96,13 +96,15 @@ class ContentfulService extends BaseService {
|
||||
},
|
||||
})
|
||||
|
||||
await asset.processForAllLocales()
|
||||
const finalAsset = await asset
|
||||
.processForAllLocales()
|
||||
.then((ast) => ast.publish())
|
||||
|
||||
assets.push({
|
||||
sys: {
|
||||
type: "Link",
|
||||
linkType: "Asset",
|
||||
id: asset.sys.id,
|
||||
id: finalAsset.sys.id,
|
||||
},
|
||||
})
|
||||
})
|
||||
@@ -231,9 +233,9 @@ class ContentfulService extends BaseService {
|
||||
fields,
|
||||
})
|
||||
|
||||
const ignoreIds = (await this.getIgnoreIds_("product")) || []
|
||||
ignoreIds.push(product.id)
|
||||
this.redis_.set("product_ignore_ids", JSON.stringify(ignoreIds))
|
||||
// const ignoreIds = (await this.getIgnoreIds_("product")) || []
|
||||
// ignoreIds.push(product.id)
|
||||
// this.redis_.set("product_ignore_ids", JSON.stringify(ignoreIds))
|
||||
return result
|
||||
} catch (error) {
|
||||
throw error
|
||||
@@ -271,38 +273,47 @@ class ContentfulService extends BaseService {
|
||||
}
|
||||
)
|
||||
|
||||
const ignoreIds = (await this.getIgnoreIds_("product_variant")) || []
|
||||
ignoreIds.push(v.id)
|
||||
this.redis_.set("product_variant_ignore_ids", JSON.stringify(ignoreIds))
|
||||
// const ignoreIds = (await this.getIgnoreIds_("product_variant")) || []
|
||||
// ignoreIds.push(v.id)
|
||||
// this.redis_.set("product_variant_ignore_ids", JSON.stringify(ignoreIds))
|
||||
return result
|
||||
} catch (error) {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
async updateProductInContentful(product) {
|
||||
async updateProductInContentful(data) {
|
||||
const updateFields = [
|
||||
"variants",
|
||||
"options",
|
||||
"tags",
|
||||
"title",
|
||||
"tags",
|
||||
"type",
|
||||
"type_id",
|
||||
"collection",
|
||||
"collection_id",
|
||||
"thumbnail",
|
||||
]
|
||||
|
||||
const found = data.fields.find((f) => updateFields.includes(f))
|
||||
if (!found) {
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
const ignoreIds = (await this.getIgnoreIds_("product")) || []
|
||||
// const ignoreIds = (await this.getIgnoreIds_("product")) || []
|
||||
|
||||
if (ignoreIds.includes(product.id)) {
|
||||
const newIgnoreIds = ignoreIds.filter((id) => id !== product.id)
|
||||
this.redis_.set("product_ignore_ids", JSON.stringify(newIgnoreIds))
|
||||
return
|
||||
} else {
|
||||
ignoreIds.push(product.id)
|
||||
this.redis_.set("product_ignore_ids", JSON.stringify(ignoreIds))
|
||||
}
|
||||
// if (ignoreIds.includes(product.id)) {
|
||||
// const newIgnoreIds = ignoreIds.filter((id) => id !== product.id)
|
||||
// this.redis_.set("product_ignore_ids", JSON.stringify(newIgnoreIds))
|
||||
// return
|
||||
// } else {
|
||||
// ignoreIds.push(product.id)
|
||||
// this.redis_.set("product_ignore_ids", JSON.stringify(ignoreIds))
|
||||
// }
|
||||
|
||||
const environment = await this.getContentfulEnvironment_()
|
||||
// check if product exists
|
||||
let productEntry = undefined
|
||||
try {
|
||||
productEntry = await environment.getEntry(product.id)
|
||||
} catch (error) {
|
||||
return this.createProductInContentful(product)
|
||||
}
|
||||
|
||||
const p = await this.productService_.retrieve(product.id, {
|
||||
const p = await this.productService_.retrieve(data.id, {
|
||||
relations: [
|
||||
"options",
|
||||
"variants",
|
||||
@@ -313,6 +324,15 @@ class ContentfulService extends BaseService {
|
||||
],
|
||||
})
|
||||
|
||||
const environment = await this.getContentfulEnvironment_()
|
||||
// check if product exists
|
||||
let productEntry = undefined
|
||||
try {
|
||||
productEntry = await environment.getEntry(data.id)
|
||||
} catch (error) {
|
||||
return this.createProductInContentful(p)
|
||||
}
|
||||
|
||||
const variantEntries = await this.getVariantEntries_(p.variants)
|
||||
const variantLinks = this.getVariantLinks_(variantEntries)
|
||||
|
||||
@@ -332,7 +352,12 @@ class ContentfulService extends BaseService {
|
||||
},
|
||||
}
|
||||
|
||||
if (p.thumbnail) {
|
||||
if (data.fields.includes("thumbnail") && p.thumbnail) {
|
||||
let url = p.thumbnail
|
||||
if (p.thumbnail.startsWith("//")) {
|
||||
url = `https:${url}`
|
||||
}
|
||||
|
||||
const thumbnailAsset = await environment.createAsset({
|
||||
fields: {
|
||||
title: {
|
||||
@@ -344,8 +369,8 @@ class ContentfulService extends BaseService {
|
||||
file: {
|
||||
"en-US": {
|
||||
contentType: "image/xyz",
|
||||
fileName: p.thumbnail,
|
||||
upload: p.thumbnail,
|
||||
fileName: url,
|
||||
upload: url,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -412,20 +437,37 @@ class ContentfulService extends BaseService {
|
||||
}
|
||||
|
||||
async updateProductVariantInContentful(variant) {
|
||||
try {
|
||||
const ignoreIds = (await this.getIgnoreIds_("product_variant")) || []
|
||||
const updateFields = [
|
||||
"title",
|
||||
"prices",
|
||||
"sku",
|
||||
"material",
|
||||
"weight",
|
||||
"length",
|
||||
"height",
|
||||
"origin_country",
|
||||
"options",
|
||||
]
|
||||
|
||||
if (ignoreIds.includes(variant.id)) {
|
||||
const newIgnoreIds = ignoreIds.filter((id) => id !== variant.id)
|
||||
this.redis_.set(
|
||||
"product_variant_ignore_ids",
|
||||
JSON.stringify(newIgnoreIds)
|
||||
)
|
||||
return
|
||||
} else {
|
||||
ignoreIds.push(variant.id)
|
||||
this.redis_.set("product_variant_ignore_ids", JSON.stringify(ignoreIds))
|
||||
}
|
||||
const found = variant.fields.find((f) => updateFields.includes(f))
|
||||
if (!found) {
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
// const ignoreIds = (await this.getIgnoreIds_("product_variant")) || []
|
||||
|
||||
//if (ignoreIds.includes(variant.id)) {
|
||||
// const newIgnoreIds = ignoreIds.filter((id) => id !== variant.id)
|
||||
// this.redis_.set(
|
||||
// "product_variant_ignore_ids",
|
||||
// JSON.stringify(newIgnoreIds)
|
||||
// )
|
||||
// return
|
||||
//} else {
|
||||
// ignoreIds.push(variant.id)
|
||||
// this.redis_.set("product_variant_ignore_ids", JSON.stringify(ignoreIds))
|
||||
//}
|
||||
|
||||
const environment = await this.getContentfulEnvironment_()
|
||||
// check if product exists
|
||||
@@ -476,19 +518,23 @@ class ContentfulService extends BaseService {
|
||||
const environment = await this.getContentfulEnvironment_()
|
||||
const productEntry = await environment.getEntry(productId)
|
||||
|
||||
const ignoreIds = (await this.getIgnoreIds_("product")) || []
|
||||
if (ignoreIds.includes(productId)) {
|
||||
const newIgnoreIds = ignoreIds.filter((id) => id !== productId)
|
||||
this.redis_.set("product_ignore_ids", JSON.stringify(newIgnoreIds))
|
||||
return
|
||||
} else {
|
||||
ignoreIds.push(productId)
|
||||
this.redis_.set("product_ignore_ids", JSON.stringify(ignoreIds))
|
||||
}
|
||||
const product = await this.productService_.retrieve(productId)
|
||||
|
||||
let update = {
|
||||
title:
|
||||
productEntry.fields[this.getCustomField("title", "product")]["en-US"],
|
||||
//const ignoreIds = (await this.getIgnoreIds_("product")) || []
|
||||
//if (ignoreIds.includes(productId)) {
|
||||
// const newIgnoreIds = ignoreIds.filter((id) => id !== productId)
|
||||
// this.redis_.set("product_ignore_ids", JSON.stringify(newIgnoreIds))
|
||||
// return
|
||||
//} else {
|
||||
// ignoreIds.push(productId)
|
||||
// this.redis_.set("product_ignore_ids", JSON.stringify(ignoreIds))
|
||||
//}
|
||||
|
||||
let update = {}
|
||||
const title =
|
||||
productEntry.fields[this.getCustomField("title", "product")]["en-US"]
|
||||
if (product.title !== title) {
|
||||
update.title = title
|
||||
}
|
||||
|
||||
// Get the thumbnail, if present
|
||||
@@ -497,15 +543,16 @@ class ContentfulService extends BaseService {
|
||||
productEntry.fields.thumbnail["en-US"].sys.id
|
||||
)
|
||||
|
||||
update.thumbnail = thumb.fields.file["en-US"].url
|
||||
if (thumb.fields.file["en-US"].url) {
|
||||
if (!product.thumbnail.includes(thumb.fields.file["en-US"].url)) {
|
||||
update.thumbnail = thumb.fields.file["en-US"].url
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const updatedProduct = await this.productService_.update(
|
||||
productId,
|
||||
update
|
||||
)
|
||||
|
||||
return updatedProduct
|
||||
if (!_.isEmpty(update)) {
|
||||
await this.productService_.update(productId, update)
|
||||
}
|
||||
} catch (error) {
|
||||
throw error
|
||||
}
|
||||
@@ -516,18 +563,18 @@ class ContentfulService extends BaseService {
|
||||
const environment = await this.getContentfulEnvironment_()
|
||||
const variantEntry = await environment.getEntry(variantId)
|
||||
|
||||
const ignoreIds = (await this.getIgnoreIds_("product_variant")) || []
|
||||
if (ignoreIds.includes(variantId)) {
|
||||
const newIgnoreIds = ignoreIds.filter((id) => id !== variantId)
|
||||
this.redis_.set(
|
||||
"product_variant_ignore_ids",
|
||||
JSON.stringify(newIgnoreIds)
|
||||
)
|
||||
return
|
||||
} else {
|
||||
ignoreIds.push(variantId)
|
||||
this.redis_.set("product_variant_ignore_ids", JSON.stringify(ignoreIds))
|
||||
}
|
||||
// const ignoreIds = (await this.getIgnoreIds_("product_variant")) || []
|
||||
// if (ignoreIds.includes(variantId)) {
|
||||
// const newIgnoreIds = ignoreIds.filter((id) => id !== variantId)
|
||||
// this.redis_.set(
|
||||
// "product_variant_ignore_ids",
|
||||
// JSON.stringify(newIgnoreIds)
|
||||
// )
|
||||
// return
|
||||
// } else {
|
||||
// ignoreIds.push(variantId)
|
||||
// this.redis_.set("product_variant_ignore_ids", JSON.stringify(ignoreIds))
|
||||
// }
|
||||
|
||||
const updatedVariant = await this.productVariantService_.update(
|
||||
variantId,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import _ from "lodash"
|
||||
import jwt from "jsonwebtoken"
|
||||
import { Validator } from "medusa-core-utils"
|
||||
import config from "../../../../config"
|
||||
@@ -19,7 +20,7 @@ import config from "../../../../config"
|
||||
* application/json:
|
||||
* schema:
|
||||
* properties:
|
||||
* customer:
|
||||
* user:
|
||||
* $ref: "#/components/schemas/user"
|
||||
*/
|
||||
export default async (req, res) => {
|
||||
@@ -46,5 +47,7 @@ export default async (req, res) => {
|
||||
expiresIn: "24h",
|
||||
})
|
||||
|
||||
res.json({ user: result.user })
|
||||
const cleanRes = _.omit(result.user, ["password_hash"])
|
||||
|
||||
res.json({ user: cleanRes })
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import passport from "passport"
|
||||
import _ from "lodash"
|
||||
|
||||
/**
|
||||
* @oas [get] /auth
|
||||
@@ -14,11 +14,13 @@ import passport from "passport"
|
||||
* application/json:
|
||||
* schema:
|
||||
* properties:
|
||||
* customer:
|
||||
* user:
|
||||
* $ref: "#/components/schemas/user"
|
||||
*/
|
||||
export default async (req, res) => {
|
||||
const userService = req.scope.resolve("userService")
|
||||
const user = await userService.retrieve(req.user.userId)
|
||||
res.status(200).json({ user })
|
||||
|
||||
const cleanRes = _.omit(user, ["password_hash"])
|
||||
res.status(200).json({ user: cleanRes })
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import { defaultFields, defaultRelations } from "./"
|
||||
* summary: "Create a Swap"
|
||||
* description: "Creates a Swap. Swaps are used to handle Return of previously purchased goods and Fulfillment of replacements simultaneously."
|
||||
* parameters:
|
||||
* - (path) id=* {string} The id of the Swap.
|
||||
* - (path) id=* {string} The id of the Order.
|
||||
* requestBody:
|
||||
* content:
|
||||
* application/json:
|
||||
|
||||
@@ -6,7 +6,7 @@ import { MedusaError, Validator } from "medusa-core-utils"
|
||||
* @oas [get] /orders
|
||||
* operationId: "GetOrders"
|
||||
* summary: "List Orders"
|
||||
* description: "Retrieves an list of Orders"
|
||||
* description: "Retrieves a list of Orders"
|
||||
* tags:
|
||||
* - Order
|
||||
* responses:
|
||||
@@ -16,8 +16,10 @@ import { MedusaError, Validator } from "medusa-core-utils"
|
||||
* application/json:
|
||||
* schema:
|
||||
* properties:
|
||||
* order:
|
||||
* $ref: "#/components/schemas/order"
|
||||
* orders:
|
||||
* type: array
|
||||
* items:
|
||||
* $ref: "#/components/schemas/order"
|
||||
*/
|
||||
export default async (req, res) => {
|
||||
const schema = Validator.orderFilter()
|
||||
|
||||
@@ -309,7 +309,7 @@ describe("ProductVariantService", () => {
|
||||
"product-variant.updated",
|
||||
{
|
||||
id: IdMap.getId("ironman"),
|
||||
title: "new title",
|
||||
fields: ["title"],
|
||||
}
|
||||
)
|
||||
|
||||
@@ -333,7 +333,7 @@ describe("ProductVariantService", () => {
|
||||
"product-variant.updated",
|
||||
{
|
||||
id: IdMap.getId("ironman"),
|
||||
title: "new title",
|
||||
fields: ["title"],
|
||||
}
|
||||
)
|
||||
|
||||
@@ -370,10 +370,7 @@ describe("ProductVariantService", () => {
|
||||
"product-variant.updated",
|
||||
{
|
||||
id: IdMap.getId("ironman"),
|
||||
title: "new title",
|
||||
metadata: {
|
||||
testing: "this",
|
||||
},
|
||||
fields: ["title", "metadata"],
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -298,7 +298,10 @@ class ProductVariantService extends BaseService {
|
||||
const result = await variantRepo.save(variant)
|
||||
await this.eventBus_
|
||||
.withTransaction(manager)
|
||||
.emit(ProductVariantService.Events.UPDATED, result)
|
||||
.emit(ProductVariantService.Events.UPDATED, {
|
||||
id: result.id,
|
||||
fields: Object.keys(update),
|
||||
})
|
||||
return result
|
||||
})
|
||||
}
|
||||
|
||||
@@ -444,6 +444,7 @@ class ProductService extends BaseService {
|
||||
.withTransaction(manager)
|
||||
.emit(ProductService.Events.UPDATED, {
|
||||
id: result.id,
|
||||
fields: Object.keys(update),
|
||||
})
|
||||
return result
|
||||
})
|
||||
|
||||
@@ -3501,9 +3501,9 @@ domexception@^1.0.1:
|
||||
webidl-conversions "^4.0.2"
|
||||
|
||||
dot-prop@^4.1.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
|
||||
integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4"
|
||||
integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==
|
||||
dependencies:
|
||||
is-obj "^1.0.0"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user