Compare commits
3 Commits
fb648d477f
...
c8d0221247
| Author | SHA1 | Date | |
|---|---|---|---|
|
c8d0221247
|
|||
|
a9fa89107e
|
|||
|
7efb083e1d
|
4
.dockerignore
Normal file
4
.dockerignore
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
Dockerfile
|
||||||
|
.dockerignore
|
||||||
14
Dockerfile
Normal file
14
Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
FROM node:21
|
||||||
|
|
||||||
|
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
|
||||||
|
RUN mkdir -p /home/node/app/var/db && chown -R node:node /home/node/app
|
||||||
|
WORKDIR /home/node/app
|
||||||
|
|
||||||
|
USER node
|
||||||
|
COPY --chown=node:node package*.json ./
|
||||||
|
RUN npm install
|
||||||
|
COPY --chown=node:node src src
|
||||||
|
COPY --chown=node:node bin bin
|
||||||
|
|
||||||
|
EXPOSE 3000
|
||||||
|
CMD [ "npm", "start" ]
|
||||||
24
bin/www
24
bin/www
@@ -20,20 +20,18 @@ const path = require("path");
|
|||||||
var port = normalizePort(process.env.PORT || "3000");
|
var port = normalizePort(process.env.PORT || "3000");
|
||||||
app.set("port", port);
|
app.set("port", port);
|
||||||
|
|
||||||
/**
|
|
||||||
* Create HTTPS server.
|
|
||||||
*/
|
|
||||||
const https_options = {
|
|
||||||
key: fs.readFileSync("certs/key.pem"),
|
|
||||||
cert: fs.readFileSync("certs/cert.pem"),
|
|
||||||
};
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === "development") {
|
if (process.env.NODE_ENV === "development") {
|
||||||
// console.log(`starting livereload, watching ${path.join(__dirname, "../src/views")}`)
|
/**
|
||||||
|
* Create HTTPS server.
|
||||||
|
*/
|
||||||
|
const https_options = {
|
||||||
|
key: fs.readFileSync("certs/key.pem"),
|
||||||
|
cert: fs.readFileSync("certs/cert.pem"),
|
||||||
|
};
|
||||||
var livereload = require("livereload");
|
var livereload = require("livereload");
|
||||||
var connectLiveReload = require("connect-livereload");
|
|
||||||
|
|
||||||
const liveReloadServer = livereload.createServer({https: https_options, extraExts: ['pug']});
|
const liveReloadServer = livereload.createServer({https: https_options});
|
||||||
liveReloadServer.watch(path.join(__dirname, "../src/views"));
|
liveReloadServer.watch(path.join(__dirname, "../src/views"));
|
||||||
liveReloadServer.server.once("connection", () => {
|
liveReloadServer.server.once("connection", () => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -41,9 +39,11 @@ if (process.env.NODE_ENV === "development") {
|
|||||||
}, 100);
|
}, 100);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var server = https.createServer(https_options, app);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var server = http.createServer(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
var server = https.createServer(https_options, app);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listen on provided port, on all network interfaces.
|
* Listen on provided port, on all network interfaces.
|
||||||
|
|||||||
3
caddy/Caddyfile
Normal file
3
caddy/Caddyfile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
localhost {
|
||||||
|
reverse_proxy app:3000
|
||||||
|
}
|
||||||
24
docker-compose.yml
Normal file
24
docker-compose.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
version: "3.3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
build: .
|
||||||
|
networks:
|
||||||
|
- web
|
||||||
|
expose:
|
||||||
|
- 3000
|
||||||
|
|
||||||
|
caddy:
|
||||||
|
image: caddy
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
volumes:
|
||||||
|
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||||
|
networks:
|
||||||
|
- web
|
||||||
|
|
||||||
|
networks:
|
||||||
|
web:
|
||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -34,7 +34,7 @@
|
|||||||
"pluralize": "^8.0.0",
|
"pluralize": "^8.0.0",
|
||||||
"pug": "^3.0.2",
|
"pug": "^3.0.2",
|
||||||
"sortablejs": "^1.15.0",
|
"sortablejs": "^1.15.0",
|
||||||
"teamsnap.js": "github:anthonyscorrea/teamsnap-javascript-sdk#add-eventLineup-eventLineupEntry",
|
"teamsnap.js": "github:anthonyscorrea/teamsnap-javascript-sdk#link-with-null-link",
|
||||||
"tinymce": "^6.8.3",
|
"tinymce": "^6.8.3",
|
||||||
"underscore": "^1.13.6",
|
"underscore": "^1.13.6",
|
||||||
"xhr2": "^0.2.1"
|
"xhr2": "^0.2.1"
|
||||||
@@ -4708,7 +4708,7 @@
|
|||||||
},
|
},
|
||||||
"node_modules/teamsnap.js": {
|
"node_modules/teamsnap.js": {
|
||||||
"version": "1.62.1",
|
"version": "1.62.1",
|
||||||
"resolved": "git+ssh://git@github.com/anthonyscorrea/teamsnap-javascript-sdk.git#67168be49492fe5a0331bbbeb33408a42c40ab9a",
|
"resolved": "git+ssh://git@github.com/anthonyscorrea/teamsnap-javascript-sdk.git#cf747f97f030270615f6d293e734adb6fb1b5e86",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"form-data": "1.0.0-rc3",
|
"form-data": "1.0.0-rc3",
|
||||||
"xmlhttprequest": "1.8.0"
|
"xmlhttprequest": "1.8.0"
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
"pluralize": "^8.0.0",
|
"pluralize": "^8.0.0",
|
||||||
"pug": "^3.0.2",
|
"pug": "^3.0.2",
|
||||||
"sortablejs": "^1.15.0",
|
"sortablejs": "^1.15.0",
|
||||||
"teamsnap.js": "github:anthonyscorrea/teamsnap-javascript-sdk#add-eventLineup-eventLineupEntry",
|
"teamsnap.js": "github:anthonyscorrea/teamsnap-javascript-sdk#link-with-null-link",
|
||||||
"tinymce": "^6.8.3",
|
"tinymce": "^6.8.3",
|
||||||
"underscore": "^1.13.6",
|
"underscore": "^1.13.6",
|
||||||
"xhr2": "^0.2.1"
|
"xhr2": "^0.2.1"
|
||||||
|
|||||||
@@ -163,4 +163,6 @@ app.use(function (err, req, res, next) {
|
|||||||
// next(createError(404));
|
// next(createError(404));
|
||||||
// });
|
// });
|
||||||
|
|
||||||
|
app.set('trust proxy')
|
||||||
|
|
||||||
module.exports = {app};
|
module.exports = {app};
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
tsUtils = require("../lib/utils");
|
tsUtils = require("../lib/utils");
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { teamsnapFailure, tsPromise } = require("../lib/utils");
|
const { teamsnapFailure, tsPromise, teamsnapCallback } = require("../lib/utils");
|
||||||
|
const {promisify} = require('util')
|
||||||
|
|
||||||
|
|
||||||
exports.helpers = {
|
exports.helpers = {
|
||||||
@@ -23,8 +24,12 @@ exports.partials = path.join(__dirname, "../views/event/partials")
|
|||||||
exports.getEvents = async (req, res, next) => {
|
exports.getEvents = async (req, res, next) => {
|
||||||
const {user, team, layout} = req
|
const {user, team, layout} = req
|
||||||
const bulkLoadTypes = ["event", "availabilitySummary"]
|
const bulkLoadTypes = ["event", "availabilitySummary"]
|
||||||
req.promises.push(
|
// const tsPromiseBulkload = promisify(teamsnap.bulkLoad)
|
||||||
tsPromise('bulkLoad', {teamId: team.id, types: bulkLoadTypes})
|
const promise = teamsnap.bulkLoad(
|
||||||
|
{teamId: team.id, types: bulkLoadTypes},
|
||||||
|
undefined,
|
||||||
|
(err,items) => {teamsnapCallback(err, items, {req, source: 'getEvents', method: 'bulkLoad'})}
|
||||||
|
)
|
||||||
.then(items=>tsUtils.groupTeamsnapItems(items))
|
.then(items=>tsUtils.groupTeamsnapItems(items))
|
||||||
.then(items=>{
|
.then(items=>{
|
||||||
items.events.forEach((event) => {
|
items.events.forEach((event) => {
|
||||||
@@ -34,13 +39,10 @@ exports.getEvents = async (req, res, next) => {
|
|||||||
req.events = items.events;
|
req.events = items.events;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.then(tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team.id, req))
|
|
||||||
.catch((err) => {
|
|
||||||
teamsnapFailure(err,next)
|
|
||||||
})
|
|
||||||
)
|
|
||||||
await Promise.all(req.promises)
|
|
||||||
|
|
||||||
|
req.promises.push(promise)
|
||||||
|
all = await Promise.all(req.promises)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const context = {
|
const context = {
|
||||||
title: "Events",
|
title: "Events",
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ exports.getTeams = async (req, res, next) => {
|
|||||||
teamsnapCallback(err,items);
|
teamsnapCallback(err,items);
|
||||||
req.teams = items;
|
req.teams = items;
|
||||||
})
|
})
|
||||||
.then(() => tsUtils.teamsnapLog('loadTeams', types=['teams'], null, req))
|
|
||||||
.fail(
|
.fail(
|
||||||
next
|
next
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -61,40 +61,25 @@ exports.initTeamsnap = (req, res, next) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.teamsnapLog = (method, types, id, req, message="") => {
|
exports.teamsnapCallback = (err,result, d) => {
|
||||||
console.log(
|
if (Array.isArray(result)){
|
||||||
|
types = new Set(result.map(i=>i.type))
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
types = [result?.type]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d) {
|
||||||
|
console.log(
|
||||||
'\x1b[33mTeamSnap:\x1b[0m',
|
'\x1b[33mTeamSnap:\x1b[0m',
|
||||||
`${method} for \x1b[33m\[${types}\]\x1b[0m on ${id}`,
|
`${d.source} using ${d.method ? "teamsnap."+d.method : "?"} \x1b[33m\[${Array.from(types).join(", ")}\]\x1b[0m`
|
||||||
`on url ${req.url}`,
|
|
||||||
`"${message}"`
|
|
||||||
)
|
)
|
||||||
return;
|
}
|
||||||
}
|
if (err) {
|
||||||
|
|
||||||
exports.tsPromise = (func_name, params) => {
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
teamsnap.bulkLoad(
|
|
||||||
params,
|
|
||||||
(err, data) => {
|
|
||||||
console.log();
|
|
||||||
if (err !== null) {
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
resolve(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.teamsnapCallback = (err,items) => {
|
|
||||||
if (err) {
|
|
||||||
console.log(err.message);
|
console.log(err.message);
|
||||||
throw new Error(err)
|
throw new Error(err)
|
||||||
}
|
}
|
||||||
return items;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.teamsnapFailure = (err, next) => {
|
exports.teamsnapFailure = (err, next) => {
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ passport.use(
|
|||||||
callbackURL: "/auth/teamsnap/callback",
|
callbackURL: "/auth/teamsnap/callback",
|
||||||
passReqToCallback: true,
|
passReqToCallback: true,
|
||||||
scope: ["read", "write"],
|
scope: ["read", "write"],
|
||||||
|
proxy: true
|
||||||
},
|
},
|
||||||
async function (req, accessToken, refreshToken, profile, done) {
|
async function (req, accessToken, refreshToken, profile, done) {
|
||||||
json = JSON.parse(profile._raw);
|
json = JSON.parse(profile._raw);
|
||||||
|
|||||||
@@ -2,16 +2,20 @@ const express = require("express");
|
|||||||
const eventsController = require("../controllers/event");
|
const eventsController = require("../controllers/event");
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const tsUtils = require("../lib/utils")
|
const tsUtils = require("../lib/utils")
|
||||||
|
const {teamsnapCallback} = require("../lib/utils")
|
||||||
|
|
||||||
// Middleware
|
// Middleware
|
||||||
const loadEvent = (req,res,next) => {
|
const loadEvent = (req,res,next) => {
|
||||||
const {team_id, event_id} = req.params;
|
const {team_id, event_id} = req.params;
|
||||||
const bulkLoadTypes = ["event", "availabilitySummary"]
|
const bulkLoadTypes = ["event", "availabilitySummary"]
|
||||||
tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req);
|
req.promises.push(
|
||||||
req.promises.push(teamsnap.bulkLoad({teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:event_id}, null, tsUtils.teamsnapCallback)
|
teamsnap.bulkLoad(
|
||||||
|
{teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:event_id},
|
||||||
|
null,
|
||||||
|
(err, items) => {teamsnapCallback(err, items, {req, source:"loadEvent", method:'bulkLoad'})}
|
||||||
|
)
|
||||||
.then(bulkLoadItems=>{
|
.then(bulkLoadItems=>{
|
||||||
const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes);
|
const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes);
|
||||||
tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req);
|
|
||||||
req.availabilitySummary = items.availabilitySummaries.find(e=>e.eventId==event_id);
|
req.availabilitySummary = items.availabilitySummaries.find(e=>e.eventId==event_id);
|
||||||
req.event = items.events.find(e=>e.id==event_id);
|
req.event = items.events.find(e=>e.id==event_id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ const tsUtils = require('../lib/utils')
|
|||||||
const multer = require("multer");
|
const multer = require("multer");
|
||||||
const upload = multer()
|
const upload = multer()
|
||||||
const { doubleCsrfProtection } = require('../middlewares/csrf');
|
const { doubleCsrfProtection } = require('../middlewares/csrf');
|
||||||
|
const {teamsnapCallback} = require("../lib/utils")
|
||||||
|
|
||||||
|
|
||||||
// Middleware
|
// Middleware
|
||||||
@@ -12,16 +13,24 @@ const loadEventLineup = (req,res,next) => {
|
|||||||
const {team_id, event_id} = req.params
|
const {team_id, event_id} = req.params
|
||||||
if (!req.event_lineup){
|
if (!req.event_lineup){
|
||||||
bulkLoadTypes = ['eventLineup', 'eventLineupEntry']
|
bulkLoadTypes = ['eventLineup', 'eventLineupEntry']
|
||||||
req.promises.push(teamsnap.bulkLoad({teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:event_id}, null, tsUtils.teamsnapCallback)
|
req.promises.push(
|
||||||
|
teamsnap.bulkLoad(
|
||||||
|
{teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:event_id},
|
||||||
|
null,
|
||||||
|
(err, items) => {teamsnapCallback(err, items, {req, source:"loadEventLineup", method:'bulkLoad'})}
|
||||||
|
)
|
||||||
.then(items => tsUtils.groupTeamsnapItems(items, bulkLoadTypes))
|
.then(items => tsUtils.groupTeamsnapItems(items, bulkLoadTypes))
|
||||||
.then(items => {
|
.then(items => {
|
||||||
tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req);
|
|
||||||
req.event_lineup = items.eventLineups.pop();
|
req.event_lineup = items.eventLineups.pop();
|
||||||
req.event_lineup_entries = items.eventLineupEntries?.sort((a,b)=>a.sequence-b.sequence) || [];
|
req.event_lineup_entries = items.eventLineupEntries?.sort((a,b)=>a.sequence-b.sequence) || [];
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
tsUtils.teamsnapLog('loadAvailabilites', types=['availabilities'], team_id, req);
|
req.promises.push(
|
||||||
req.promises.push(teamsnap.loadAvailabilities({eventId: event_id}).then(availabilities => req.availabilities = availabilities))
|
teamsnap.loadAvailabilities(
|
||||||
|
{eventId: event_id},
|
||||||
|
(err, items) => {teamsnapCallback(err, items, {req, source:"loadEventLineup", method:'loadAvailabilities'})}
|
||||||
|
)
|
||||||
|
.then(availabilities => req.availabilities = availabilities))
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// const {event_lineup} = req
|
// const {event_lineup} = req
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ const {loadEvent} = require("./event");
|
|||||||
const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload")
|
const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload")
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const tsUtils = require('../lib/utils')
|
const tsUtils = require('../lib/utils')
|
||||||
|
const {teamsnapCallback} = require('../lib/utils')
|
||||||
const multer = require("multer");
|
const multer = require("multer");
|
||||||
const upload = multer()
|
const upload = multer()
|
||||||
|
|
||||||
@@ -18,19 +19,25 @@ const loadEvents = async (req,res,next) => {
|
|||||||
const eventIds = [...recent_events.map(e=>e.id), event_id, ...upcoming_events.map(e=>e.id)]
|
const eventIds = [...recent_events.map(e=>e.id), event_id, ...upcoming_events.map(e=>e.id)]
|
||||||
// if (!req.event_lineup){
|
// if (!req.event_lineup){
|
||||||
bulkLoadTypes = ['event','eventLineup', 'eventLineupEntry']
|
bulkLoadTypes = ['event','eventLineup', 'eventLineupEntry']
|
||||||
req.promises.push(teamsnap.bulkLoad({teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:eventIds}, null, tsUtils.teamsnapCallback)
|
req.promises.push(
|
||||||
|
teamsnap.bulkLoad(
|
||||||
|
{teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:eventIds},
|
||||||
|
null,
|
||||||
|
(err, items) => {teamsnapCallback(err, items, {req, source:"loadEvents", method:'bulkLoad'})}
|
||||||
|
)
|
||||||
.then(items => tsUtils.groupTeamsnapItems(items, bulkLoadTypes))
|
.then(items => tsUtils.groupTeamsnapItems(items, bulkLoadTypes))
|
||||||
.then(items => {
|
.then(items => {
|
||||||
tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req);
|
|
||||||
req.timeline.events = items.events;
|
req.timeline.events = items.events;
|
||||||
req.timeline.event_lineups = items.eventLineups;
|
req.timeline.event_lineups = items.eventLineups;
|
||||||
req.timeline.event_lineup_entries = items.eventLineupEntries;
|
req.timeline.event_lineup_entries = items.eventLineupEntries;
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
tsUtils.teamsnapLog('loadAvailabilites', types=['availabilities'], team_id, req);
|
|
||||||
|
|
||||||
req.promises.push(
|
req.promises.push(
|
||||||
teamsnap.loadAvailabilities({eventId: eventIds}).then(availabilities => {
|
teamsnap.loadAvailabilities(
|
||||||
|
{eventId: eventIds},
|
||||||
|
(err, items) => {teamsnapCallback(err, items, {req, source:"loadEvents", method:'loadAvailabilities'})}
|
||||||
|
).then(availabilities => {
|
||||||
req.timeline.availabilities = availabilities
|
req.timeline.availabilities = availabilities
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -53,7 +60,7 @@ const linksForEventSheet = async (req, res, next) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
router.use("/:team_id([0-9]+)/event/:event_id([0-9]+)/sheet", loadEventLineup)
|
router.use("/:team_id([0-9]+)/event/:event_id([0-9]+)/sheet", loadEventLineup)
|
||||||
router.get("/:team_id([0-9]+)/event/:event_id([0-9]+)/lineup/:event_lineup_id([0-9]+)/sheet", loadEventLineup, loadRecentAndUpcomingEvents, loadEvents, eventsSheetController.getEventSheet)
|
router.get("/:team_id([0-9]+)/event/:event_id([0-9]+)/lineup/:event_lineup_id([0-9]+)/sheet", loadRecentAndUpcomingEvents, loadEvents, eventsSheetController.getEventSheet)
|
||||||
|
|
||||||
// Routes
|
// Routes
|
||||||
router.get("/:team_id([0-9]+)/event/:event_id([0-9]+)/sheet", async (req,res) => {
|
router.get("/:team_id([0-9]+)/event/:event_id([0-9]+)/sheet", async (req,res) => {
|
||||||
|
|||||||
@@ -5,21 +5,25 @@ var router = express.Router();
|
|||||||
const multer = require("multer");
|
const multer = require("multer");
|
||||||
const upload = multer()
|
const upload = multer()
|
||||||
const { doubleCsrfProtection } = require('../middlewares/csrf');
|
const { doubleCsrfProtection } = require('../middlewares/csrf');
|
||||||
|
const {teamsnapCallback} = require('../lib/utils')
|
||||||
|
|
||||||
// Middleware
|
// Middleware
|
||||||
const loadOpponent = (req,res,next) => {
|
const loadOpponent = (req,res,next) => {
|
||||||
const {opponent_id} = req.params;
|
const {opponent_id} = req.params;
|
||||||
const {team} = req
|
const {team} = req
|
||||||
req.promises.push(
|
req.promises.push(
|
||||||
teamsnap.loadOpponents(team.id, (err, opponents)=>{
|
teamsnap.loadOpponents(
|
||||||
if (err) console.log("error in route/opponent.js", err);
|
team.id,
|
||||||
}).then(opponents => {req.opponent=opponents.find(o=>o.id==opponent_id);})
|
(err, opponents) => {teamsnapCallback(err, opponents, {req, source:"loadOpponent", method:'loadOpponent'})}
|
||||||
|
)
|
||||||
|
.then(opponents => {req.opponent=opponents.find(o=>o.id==opponent_id);})
|
||||||
)
|
)
|
||||||
|
|
||||||
req.promises.push(
|
req.promises.push(
|
||||||
teamsnap.loadTeamMedia(team.id, (err, team_media)=>{
|
teamsnap.loadTeamMedia(
|
||||||
if (err) console.log("error in route/opponent.js", err);
|
team.id,
|
||||||
})
|
(err, opponents) => {teamsnapCallback(err, opponents, {req, source:"loadOpponent", method:'teamMedia'})}
|
||||||
|
)
|
||||||
.then(team_media => {
|
.then(team_media => {
|
||||||
req.opponent_logo = team_media.find(tm=>tm.description==`opponent-logo-${opponent_id}.png`)
|
req.opponent_logo = team_media.find(tm=>tm.description==`opponent-logo-${opponent_id}.png`)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,28 +4,31 @@ const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload")
|
|||||||
const { load } = require("dotenv");
|
const { load } = require("dotenv");
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const tsUtils = require('../lib/utils')
|
const tsUtils = require('../lib/utils')
|
||||||
|
const {teamsnapCallback} = require('../lib/utils')
|
||||||
|
|
||||||
// Middleware
|
// Middleware
|
||||||
const loadTeam = async (req,res,next) => {
|
const loadTeam = async (req,res,next) => {
|
||||||
const {team_id} = req.params;
|
const {team_id} = req.params;
|
||||||
req.team = await teamsnap.loadTeam(team_id)
|
req.team = await teamsnap.loadTeam(
|
||||||
tsUtils.teamsnapLog('loadTeam', types=["team"], team_id, req);
|
team_id,
|
||||||
|
(err, result) => {teamsnapCallback(err, result, {req, source: 'loadTeam', method: 'loadTeam'})}
|
||||||
|
)
|
||||||
const bulkLoadTypes = ['teamMediaGroup', 'teamPreferences', 'member'];
|
const bulkLoadTypes = ['teamMediaGroup', 'teamPreferences', 'member'];
|
||||||
const items = tsUtils.groupTeamsnapItems(teamsnap.getAllItems(), bulkLoadTypes)
|
const items = tsUtils.groupTeamsnapItems(teamsnap.getAllItems(), bulkLoadTypes)
|
||||||
if (req.session.current_team_id == null || req.session.current_team_id != team_id || bulkLoadTypes.filter(t=> !items[t] || items[t].length==0).length > 0){
|
if (req.session.current_team_id == null || req.session.current_team_id != team_id || bulkLoadTypes.filter(t=> !items[t] || items[t].length==0).length > 0){
|
||||||
req.promises.push(teamsnap.bulkLoad(
|
req.promises.push(teamsnap.bulkLoad(
|
||||||
team_id,
|
team_id,
|
||||||
bulkLoadTypes,
|
bulkLoadTypes,
|
||||||
tsUtils.teamsnapCallback
|
(err,items) => {teamsnapCallback(err, items, {req, source: 'loadTeam', method: 'bulkLoad'})}
|
||||||
).then(bulkLoadItems=>{
|
)
|
||||||
|
.then(bulkLoadItems=>{
|
||||||
const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes)
|
const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes)
|
||||||
req.members = items.members;
|
req.members = items.members;
|
||||||
req.team_media_group = items.teamMediaGroups?.pop();
|
req.team_media_group = items.teamMediaGroups?.pop();
|
||||||
req.team_preferences = items.teamsPreferences.pop();
|
req.team_preferences = items.teamsPreferences.pop();
|
||||||
req.session.current_team_id = req.team.id
|
req.session.current_team_id = req.team.id;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.then(() => tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req))
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
Reference in New Issue
Block a user