updates to teamsnapCallback

This commit is contained in:
2024-03-10 14:01:09 -05:00
parent 7efb083e1d
commit a9fa89107e
9 changed files with 77 additions and 63 deletions

View File

@@ -1,6 +1,7 @@
tsUtils = require("../lib/utils");
const path = require('path');
const { teamsnapFailure, tsPromise } = require("../lib/utils");
const { teamsnapFailure, tsPromise, teamsnapCallback } = require("../lib/utils");
const {promisify} = require('util')
exports.helpers = {
@@ -23,8 +24,12 @@ exports.partials = path.join(__dirname, "../views/event/partials")
exports.getEvents = async (req, res, next) => {
const {user, team, layout} = req
const bulkLoadTypes = ["event", "availabilitySummary"]
req.promises.push(
tsPromise('bulkLoad', {teamId: team.id, types: bulkLoadTypes})
// const tsPromiseBulkload = promisify(teamsnap.bulkLoad)
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=>{
items.events.forEach((event) => {
@@ -34,13 +39,10 @@ exports.getEvents = async (req, res, next) => {
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 {
const context = {
title: "Events",

View File

@@ -10,7 +10,6 @@ exports.getTeams = async (req, res, next) => {
teamsnapCallback(err,items);
req.teams = items;
})
.then(() => tsUtils.teamsnapLog('loadTeams', types=['teams'], null, req))
.fail(
next
)

View File

@@ -61,40 +61,25 @@ exports.initTeamsnap = (req, res, next) => {
});
};
exports.teamsnapLog = (method, types, id, req, message="") => {
console.log(
exports.teamsnapCallback = (err,result, d) => {
if (Array.isArray(result)){
types = new Set(result.map(i=>i.type))
}
else {
types = [result?.type]
}
if (d) {
console.log(
'\x1b[33mTeamSnap:\x1b[0m',
`${method} for \x1b[33m\[${types}\]\x1b[0m on ${id}`,
`on url ${req.url}`,
`"${message}"`
`${d.source} using ${d.method ? "teamsnap."+d.method : "?"} \x1b[33m\[${Array.from(types).join(", ")}\]\x1b[0m`
)
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 {
resolve(data);
}
}
)
;
});
}
exports.teamsnapCallback = (err,items) => {
if (err) {
}
if (err) {
console.log(err.message);
throw new Error(err)
}
return items;
return result;
}
exports.teamsnapFailure = (err, next) => {

View File

@@ -18,6 +18,7 @@ passport.use(
callbackURL: "/auth/teamsnap/callback",
passReqToCallback: true,
scope: ["read", "write"],
proxy: true
},
async function (req, accessToken, refreshToken, profile, done) {
json = JSON.parse(profile._raw);

View File

@@ -2,16 +2,20 @@ const express = require("express");
const eventsController = require("../controllers/event");
const router = express.Router();
const tsUtils = require("../lib/utils")
const {teamsnapCallback} = require("../lib/utils")
// Middleware
const loadEvent = (req,res,next) => {
const {team_id, event_id} = req.params;
const bulkLoadTypes = ["event", "availabilitySummary"]
tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req);
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:"loadEvent", method:'bulkLoad'})}
)
.then(bulkLoadItems=>{
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.event = items.events.find(e=>e.id==event_id);
}

View File

@@ -5,6 +5,7 @@ const tsUtils = require('../lib/utils')
const multer = require("multer");
const upload = multer()
const { doubleCsrfProtection } = require('../middlewares/csrf');
const {teamsnapCallback} = require("../lib/utils")
// Middleware
@@ -12,16 +13,24 @@ const loadEventLineup = (req,res,next) => {
const {team_id, event_id} = req.params
if (!req.event_lineup){
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.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req);
req.event_lineup = items.eventLineups.pop();
req.event_lineup_entries = items.eventLineupEntries?.sort((a,b)=>a.sequence-b.sequence) || [];
})
)
tsUtils.teamsnapLog('loadAvailabilites', types=['availabilities'], team_id, req);
req.promises.push(teamsnap.loadAvailabilities({eventId: event_id}).then(availabilities => req.availabilities = availabilities))
req.promises.push(
teamsnap.loadAvailabilities(
{eventId: event_id},
(err, items) => {teamsnapCallback(err, items, {req, source:"loadEventLineup", method:'loadAvailabilities'})}
)
.then(availabilities => req.availabilities = availabilities))
}
else {
// const {event_lineup} = req

View File

@@ -5,6 +5,7 @@ const {loadEvent} = require("./event");
const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload")
const router = express.Router();
const tsUtils = require('../lib/utils')
const {teamsnapCallback} = require('../lib/utils')
const multer = require("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)]
// if (!req.event_lineup){
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.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req);
req.timeline.events = items.events;
req.timeline.event_lineups = items.eventLineups;
req.timeline.event_lineup_entries = items.eventLineupEntries;
})
)
tsUtils.teamsnapLog('loadAvailabilites', types=['availabilities'], team_id, req);
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
}
)
@@ -53,7 +60,7 @@ const linksForEventSheet = async (req, res, next) => {
}
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
router.get("/:team_id([0-9]+)/event/:event_id([0-9]+)/sheet", async (req,res) => {

View File

@@ -5,21 +5,25 @@ var router = express.Router();
const multer = require("multer");
const upload = multer()
const { doubleCsrfProtection } = require('../middlewares/csrf');
const {teamsnapCallback} = require('../lib/utils')
// Middleware
const loadOpponent = (req,res,next) => {
const {opponent_id} = req.params;
const {team} = req
req.promises.push(
teamsnap.loadOpponents(team.id, (err, opponents)=>{
if (err) console.log("error in route/opponent.js", err);
}).then(opponents => {req.opponent=opponents.find(o=>o.id==opponent_id);})
teamsnap.loadOpponents(
team.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(
teamsnap.loadTeamMedia(team.id, (err, team_media)=>{
if (err) console.log("error in route/opponent.js", err);
})
teamsnap.loadTeamMedia(
team.id,
(err, opponents) => {teamsnapCallback(err, opponents, {req, source:"loadOpponent", method:'teamMedia'})}
)
.then(team_media => {
req.opponent_logo = team_media.find(tm=>tm.description==`opponent-logo-${opponent_id}.png`)
}

View File

@@ -4,28 +4,31 @@ const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload")
const { load } = require("dotenv");
const router = express.Router();
const tsUtils = require('../lib/utils')
const {teamsnapCallback} = require('../lib/utils')
// Middleware
const loadTeam = async (req,res,next) => {
const {team_id} = req.params;
req.team = await teamsnap.loadTeam(team_id)
tsUtils.teamsnapLog('loadTeam', types=["team"], team_id, req);
req.team = await teamsnap.loadTeam(
team_id,
(err, result) => {teamsnapCallback(err, result, {req, source: 'loadTeam', method: 'loadTeam'})}
)
const bulkLoadTypes = ['teamMediaGroup', 'teamPreferences', 'member'];
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){
req.promises.push(teamsnap.bulkLoad(
team_id,
bulkLoadTypes,
tsUtils.teamsnapCallback
).then(bulkLoadItems=>{
(err,items) => {teamsnapCallback(err, items, {req, source: 'loadTeam', method: 'bulkLoad'})}
)
.then(bulkLoadItems=>{
const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes)
req.members = items.members;
req.team_media_group = items.teamMediaGroups?.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 {