fix merge conflicts

This commit is contained in:
olivermrbl
2021-03-17 08:52:00 +01:00
29 changed files with 2847 additions and 1807 deletions

View File

@@ -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"
}

View File

@@ -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")
}

View File

@@ -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,

View File

@@ -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 })
}

View File

@@ -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 })
}

View File

@@ -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:

View File

@@ -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()

View File

@@ -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"],
}
)

View File

@@ -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
})
}

View File

@@ -444,6 +444,7 @@ class ProductService extends BaseService {
.withTransaction(manager)
.emit(ProductService.Events.UPDATED, {
id: result.id,
fields: Object.keys(update),
})
return result
})

View File

@@ -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"