updates to teamsnapCallback
This commit is contained in:
@@ -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,12 +39,9 @@ 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) => {
|
req.promises.push(promise)
|
||||||
teamsnapFailure(err,next)
|
all = await Promise.all(req.promises)
|
||||||
})
|
|
||||||
)
|
|
||||||
await Promise.all(req.promises)
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const context = {
|
const context = {
|
||||||
|
|||||||
@@ -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)){
|
||||||
'\x1b[33mTeamSnap:\x1b[0m',
|
types = new Set(result.map(i=>i.type))
|
||||||
`${method} for \x1b[33m\[${types}\]\x1b[0m on ${id}`,
|
|
||||||
`on url ${req.url}`,
|
|
||||||
`"${message}"`
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.tsPromise = (func_name, params) => {
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
teamsnap.bulkLoad(
|
|
||||||
params,
|
|
||||||
(err, data) => {
|
|
||||||
console.log();
|
|
||||||
if (err !== null) {
|
|
||||||
reject(err);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
resolve(data);
|
types = [result?.type]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.teamsnapCallback = (err,items) => {
|
if (d) {
|
||||||
|
console.log(
|
||||||
|
'\x1b[33mTeamSnap:\x1b[0m',
|
||||||
|
`${d.source} using ${d.method ? "teamsnap."+d.method : "?"} \x1b[33m\[${Array.from(types).join(", ")}\]\x1b[0m`
|
||||||
|
)
|
||||||
|
}
|
||||||
if (err) {
|
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