feat(games): accept full Steam store URL in create()
Allow callers to pass either a raw Steam app ID or a full store URL (e.g. https://store.steampowered.com/app/730/...) in req.body.steamId. In create() in controllers/games.js: - normalize input into a local steamId variable: if the value includes store.steampowered.com, extract the numeric ID via match(/\d+/)[0], otherwise use the value as-is - use the normalized steamId for both duplicate checks: user-scoped lookup (steamId + accessedBy.user) and global lookup This lets users paste a copied store link directly without manually stripping the app ID, while keeping existing raw-ID behavior unchanged.
This commit is contained in:
@@ -77,6 +77,11 @@ export const show = asyncHandler(async (req, res, next) => {
|
|||||||
*/
|
*/
|
||||||
export const create = asyncHandler(async (req, res, next) => {
|
export const create = asyncHandler(async (req, res, next) => {
|
||||||
let oldGame;
|
let oldGame;
|
||||||
|
let steamId;
|
||||||
|
|
||||||
|
if (req.body.steamId.includes("store.steampowered.com"))
|
||||||
|
steamId = req.body.steamId.match(/\d+/)[0];
|
||||||
|
else steamId = req.body.steamId;
|
||||||
|
|
||||||
if (req.body.shortDesc && isValid(req.body.shortDesc))
|
if (req.body.shortDesc && isValid(req.body.shortDesc))
|
||||||
req.body.shortDesc = decode(req.body.shortDesc);
|
req.body.shortDesc = decode(req.body.shortDesc);
|
||||||
@@ -115,9 +120,9 @@ export const create = asyncHandler(async (req, res, next) => {
|
|||||||
))
|
))
|
||||||
: "";
|
: "";
|
||||||
|
|
||||||
req.body.steamId.length > 0
|
steamId.length > 0
|
||||||
? (oldGame = await Game.findOne({
|
? (oldGame = await Game.findOne({
|
||||||
steamId: req.body.steamId,
|
steamId: steamId,
|
||||||
"accessedBy.user": req.user.id,
|
"accessedBy.user": req.user.id,
|
||||||
}))
|
}))
|
||||||
: (oldGame = await Game.findOne({
|
: (oldGame = await Game.findOne({
|
||||||
@@ -133,8 +138,8 @@ export const create = asyncHandler(async (req, res, next) => {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
req.body.steamId.length > 0
|
steamId.length > 0
|
||||||
? (oldGame = await Game.findOne({ steamId: req.body.steamId }))
|
? (oldGame = await Game.findOne({ steamId: steamId }))
|
||||||
: (oldGame = await Game.findOne({ title: req.body.title }));
|
: (oldGame = await Game.findOne({ title: req.body.title }));
|
||||||
|
|
||||||
if (oldGame) {
|
if (oldGame) {
|
||||||
|
|||||||
Reference in New Issue
Block a user