Advertisement
Guest User

Untitled

a guest
Jan 14th, 2019
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import Router from 'koa-router';
  2. import get from 'lodash/get';
  3. import 'colors';
  4. import moment from 'moment';
  5. import {
  6.   getOldTestament,
  7.   getNewTestament,
  8.   getReading,
  9.   getArticle,
  10.   getInterpretations,
  11.   getTranslates,
  12.   getSlider,
  13.   getMeta,
  14. } from '../../libs/getData';
  15. import checkReading from './checkReading';
  16. import titleToVerseInReading from './titleToVerseInReading';
  17.  
  18. const router = new Router();
  19.  
  20. router.get('/', async (ctx, next) => {
  21.   let initialStore = {};
  22.   let directProps = {};
  23.   const { meta, headers } = ctx.locals;
  24.   let metaData = {};
  25.  
  26.   // Редирект ниже
  27.  
  28.   console.log(ctx.request.query, ctx.request.querystring);
  29.   if (ctx.request.querystring && ctx.request.querystring !== 'auth-need') {
  30.     console.log(ctx.request.query, ctx.request.querystring);
  31.     ctx.redirect('/');
  32.   }
  33.  
  34.   //
  35.  
  36.   try {
  37.     const [
  38.       _oldTestament,
  39.       _newTestament,
  40.       _reading,
  41.       _article,
  42.       _interpretations,
  43.       _sliders,
  44.       _meta,
  45.       _translates,
  46.     ] = await Promise.all([
  47.       getOldTestament(headers),
  48.       getNewTestament(headers),
  49.       getReading(headers),
  50.       getArticle(headers),
  51.       getInterpretations(headers),
  52.       getSlider(),
  53.       getMeta('main'),
  54.       getTranslates(headers),
  55.     ]);
  56.  
  57.     // TODO add to redux
  58.     // const { interpretations, pages } = get(_interpretations, 'data');
  59.     const { gospel_reading, apostolic_reading, morning_reading, more_reading, ...other } = get(
  60.       _reading,
  61.       'data.reading',
  62.       [],
  63.     );
  64.  
  65.     const [
  66.       _gospel_reading,
  67.       _apostolic_reading,
  68.       _morning_reading,
  69.       _more_reading,
  70.     ] = await Promise.all([
  71.       checkReading(gospel_reading),
  72.       checkReading(apostolic_reading),
  73.       checkReading(morning_reading),
  74.       checkReading(more_reading),
  75.     ]);
  76.  
  77.     metaData = get(_meta, 'data.meta', {});
  78.  
  79.     initialStore = {
  80.       books: {
  81.         oldTestament: get(_oldTestament, 'data.books', []),
  82.         newTestament: get(_newTestament, 'data.books', []),
  83.       },
  84.       lid: {
  85.         data: {
  86.           reading: {
  87.             gospel_reading: titleToVerseInReading(gospel_reading, _gospel_reading),
  88.             apostolic_reading: titleToVerseInReading(apostolic_reading, _apostolic_reading),
  89.             morning_reading: titleToVerseInReading(morning_reading, _morning_reading),
  90.             more_reading: titleToVerseInReading(more_reading, _more_reading),
  91.             ...other,
  92.           },
  93.         },
  94.       },
  95.       // article: { article },
  96.       translates: { translates: get(_translates, 'data.translates', []) },
  97.     };
  98.  
  99.     directProps = {
  100.       latestNewsList: get(_article, 'data.article', []),
  101.       latestInterpretationsList: get(_interpretations, 'data.interpretations', []).map(inter => ({
  102.         id: inter.id,
  103.         username: inter.added_by.username,
  104.         date: moment
  105.           .unix(inter.added_at)
  106.           .locale('ru')
  107.           .format('DD MMM YYYY'),
  108.         verse: inter.verse[0],
  109.         author: get(inter, 'ekzeget.name', ''),
  110.         authorId: get(inter, 'ekzeget.id', 0),
  111.         investigated: inter.investigated,
  112.       })),
  113.       latestInterpretationsTotal: get(_interpretations, 'data.pages.totalCount', 0),
  114.       latestSlider: get(_sliders, 'data', {}),
  115.     };
  116.   } catch (error) {
  117.     console.error(error);
  118.   }
  119.  
  120.   const { title, description } = metaData;
  121.  
  122.   meta.push({
  123.     name: 'description',
  124.     content: description,
  125.   });
  126.  
  127.   ctx.locals = {
  128.     initialStore,
  129.     meta,
  130.     directProps,
  131.     title,
  132.   };
  133.   await next();
  134. });
  135.  
  136. export default router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement