@plusscommunities/pluss-newsletter-app-menu 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/module/actions/NewsActions.js +22 -1
  2. package/dist/module/actions/NewsActions.js.map +1 -1
  3. package/dist/module/actions/types.js +1 -0
  4. package/dist/module/actions/types.js.map +1 -1
  5. package/dist/module/components/newsletter/ArchiveToggle.js +8 -1
  6. package/dist/module/components/newsletter/ArchiveToggle.js.map +1 -1
  7. package/dist/module/components/newsletter/NewsList.js +4 -2
  8. package/dist/module/components/newsletter/NewsList.js.map +1 -1
  9. package/dist/module/components/newsletter/NewsPage.js +0 -1
  10. package/dist/module/components/newsletter/NewsPage.js.map +1 -1
  11. package/dist/module/components/newsletter/NewsWidget.js +4 -2
  12. package/dist/module/components/newsletter/NewsWidget.js.map +1 -1
  13. package/dist/module/components/newsletter/NewsletterPost.js +9 -0
  14. package/dist/module/components/newsletter/NewsletterPost.js.map +1 -1
  15. package/dist/module/reducers/NewsReducer.js +7 -1
  16. package/dist/module/reducers/NewsReducer.js.map +1 -1
  17. package/dist/module/webapi/index.js +1 -0
  18. package/dist/module/webapi/index.js.map +1 -1
  19. package/dist/module/webapi/newsActions.js +20 -1
  20. package/dist/module/webapi/newsActions.js.map +1 -1
  21. package/package.json +2 -2
  22. package/src/actions/NewsActions.js +24 -0
  23. package/src/actions/types.js +1 -0
  24. package/src/components/newsletter/ArchiveToggle.js +12 -2
  25. package/src/components/newsletter/NewsList.js +3 -2
  26. package/src/components/newsletter/NewsPage.js +0 -1
  27. package/src/components/newsletter/NewsWidget.js +3 -2
  28. package/src/components/newsletter/NewsletterPost.js +19 -6
  29. package/src/reducers/NewsReducer.js +4 -0
  30. package/src/webapi/index.js +1 -0
  31. package/src/webapi/newsActions.js +16 -1
@@ -1,4 +1,6 @@
1
- import { NEWS_LOADED, FEATUREDNEWS_LOADED, NEWS_ADDED, LOAD_NEWSSUBMISSIONS, REMOVE_NEWSSUBMISSION, ARCHIVE_POST, UNARCHIVE_POST, SET_SHOW_ARCHIVE } from './types';
1
+ import _ from 'lodash';
2
+ import { NEWS_LOADED, FEATUREDNEWS_LOADED, NEWS_ADDED, LOAD_NEWSSUBMISSIONS, REMOVE_NEWSSUBMISSION, LOAD_ARCHIVED_POSTS, ARCHIVE_POST, UNARCHIVE_POST, SET_SHOW_ARCHIVE } from './types';
3
+ import { newsActions } from '../webapi';
2
4
  export const newsLoaded = (news, fullRefresh, timestamp) => {
3
5
  return {
4
6
  type: NEWS_LOADED,
@@ -33,6 +35,25 @@ export const removeNewsSubmission = id => {
33
35
  payload: id
34
36
  };
35
37
  };
38
+ export const getArchivedPostSetting = site => {
39
+ return async dispatch => {
40
+ try {
41
+ // If not already saved on the server, don't override
42
+ const ids = await newsActions.getArchivedPosts(site);
43
+ if (!_.isNil(ids)) dispatch(archivedPostsLoaded(ids));
44
+ const show = await newsActions.getArchivedPostsShow(site);
45
+ if (!_.isNil(show)) dispatch(setShowArchive(show));
46
+ } catch (error) {
47
+ console.log('getArchivedPostSetting', error);
48
+ }
49
+ };
50
+ };
51
+ export const archivedPostsLoaded = ids => {
52
+ return {
53
+ type: LOAD_ARCHIVED_POSTS,
54
+ payload: ids
55
+ };
56
+ };
36
57
  export const archivePost = id => {
37
58
  return {
38
59
  type: ARCHIVE_POST,
@@ -1 +1 @@
1
- {"version":3,"names":["NEWS_LOADED","FEATUREDNEWS_LOADED","NEWS_ADDED","LOAD_NEWSSUBMISSIONS","REMOVE_NEWSSUBMISSION","ARCHIVE_POST","UNARCHIVE_POST","SET_SHOW_ARCHIVE","newsLoaded","news","fullRefresh","timestamp","type","payload","list","featuredNewsLoaded","newsAdded","loadNewsSubmissions","newsSubmissions","removeNewsSubmission","id","archivePost","unarchivePost","setShowArchive","show"],"sources":["NewsActions.js"],"sourcesContent":["import {\n NEWS_LOADED,\n FEATUREDNEWS_LOADED,\n NEWS_ADDED,\n LOAD_NEWSSUBMISSIONS,\n REMOVE_NEWSSUBMISSION,\n ARCHIVE_POST,\n UNARCHIVE_POST,\n SET_SHOW_ARCHIVE,\n} from './types';\n\nexport const newsLoaded = (news, fullRefresh, timestamp) => {\n return {\n type: NEWS_LOADED,\n payload: { list: news, fullRefresh, timestamp },\n };\n};\nexport const featuredNewsLoaded = news => {\n return {\n type: FEATUREDNEWS_LOADED,\n payload: news,\n };\n};\n\nexport const newsAdded = news => {\n return {\n type: NEWS_ADDED,\n payload: news,\n };\n};\n\nexport const loadNewsSubmissions = newsSubmissions => {\n return {\n type: LOAD_NEWSSUBMISSIONS,\n payload: newsSubmissions,\n };\n};\n\nexport const removeNewsSubmission = id => {\n return {\n type: REMOVE_NEWSSUBMISSION,\n payload: id,\n };\n};\n\nexport const archivePost = id => {\n return {\n type: ARCHIVE_POST,\n payload: id,\n };\n};\n\nexport const unarchivePost = id => {\n return {\n type: UNARCHIVE_POST,\n payload: id,\n };\n};\n\nexport const setShowArchive = show => {\n return {\n type: SET_SHOW_ARCHIVE,\n payload: show,\n };\n};\n"],"mappings":"AAAA,SACEA,WAAW,EACXC,mBAAmB,EACnBC,UAAU,EACVC,oBAAoB,EACpBC,qBAAqB,EACrBC,YAAY,EACZC,cAAc,EACdC,gBAAgB,QACX,SAAS;AAEhB,OAAO,MAAMC,UAAU,GAAGA,CAACC,IAAI,EAAEC,WAAW,EAAEC,SAAS,KAAK;EAC1D,OAAO;IACLC,IAAI,EAAEZ,WAAW;IACjBa,OAAO,EAAE;MAAEC,IAAI,EAAEL,IAAI;MAAEC,WAAW;MAAEC;IAAU;EAChD,CAAC;AACH,CAAC;AACD,OAAO,MAAMI,kBAAkB,GAAGN,IAAI,IAAI;EACxC,OAAO;IACLG,IAAI,EAAEX,mBAAmB;IACzBY,OAAO,EAAEJ;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMO,SAAS,GAAGP,IAAI,IAAI;EAC/B,OAAO;IACLG,IAAI,EAAEV,UAAU;IAChBW,OAAO,EAAEJ;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMQ,mBAAmB,GAAGC,eAAe,IAAI;EACpD,OAAO;IACLN,IAAI,EAAET,oBAAoB;IAC1BU,OAAO,EAAEK;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAGC,EAAE,IAAI;EACxC,OAAO;IACLR,IAAI,EAAER,qBAAqB;IAC3BS,OAAO,EAAEO;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,WAAW,GAAGD,EAAE,IAAI;EAC/B,OAAO;IACLR,IAAI,EAAEP,YAAY;IAClBQ,OAAO,EAAEO;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAME,aAAa,GAAGF,EAAE,IAAI;EACjC,OAAO;IACLR,IAAI,EAAEN,cAAc;IACpBO,OAAO,EAAEO;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMG,cAAc,GAAGC,IAAI,IAAI;EACpC,OAAO;IACLZ,IAAI,EAAEL,gBAAgB;IACtBM,OAAO,EAAEW;EACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"names":["_","NEWS_LOADED","FEATUREDNEWS_LOADED","NEWS_ADDED","LOAD_NEWSSUBMISSIONS","REMOVE_NEWSSUBMISSION","LOAD_ARCHIVED_POSTS","ARCHIVE_POST","UNARCHIVE_POST","SET_SHOW_ARCHIVE","newsActions","newsLoaded","news","fullRefresh","timestamp","type","payload","list","featuredNewsLoaded","newsAdded","loadNewsSubmissions","newsSubmissions","removeNewsSubmission","id","getArchivedPostSetting","site","dispatch","ids","getArchivedPosts","isNil","archivedPostsLoaded","show","getArchivedPostsShow","setShowArchive","error","console","log","archivePost","unarchivePost"],"sources":["NewsActions.js"],"sourcesContent":["import _ from 'lodash';\nimport {\n NEWS_LOADED,\n FEATUREDNEWS_LOADED,\n NEWS_ADDED,\n LOAD_NEWSSUBMISSIONS,\n REMOVE_NEWSSUBMISSION,\n LOAD_ARCHIVED_POSTS,\n ARCHIVE_POST,\n UNARCHIVE_POST,\n SET_SHOW_ARCHIVE,\n} from './types';\nimport { newsActions } from '../webapi';\n\nexport const newsLoaded = (news, fullRefresh, timestamp) => {\n return {\n type: NEWS_LOADED,\n payload: { list: news, fullRefresh, timestamp },\n };\n};\nexport const featuredNewsLoaded = news => {\n return {\n type: FEATUREDNEWS_LOADED,\n payload: news,\n };\n};\n\nexport const newsAdded = news => {\n return {\n type: NEWS_ADDED,\n payload: news,\n };\n};\n\nexport const loadNewsSubmissions = newsSubmissions => {\n return {\n type: LOAD_NEWSSUBMISSIONS,\n payload: newsSubmissions,\n };\n};\n\nexport const removeNewsSubmission = id => {\n return {\n type: REMOVE_NEWSSUBMISSION,\n payload: id,\n };\n};\n\nexport const getArchivedPostSetting = site => {\n return async dispatch => {\n try {\n // If not already saved on the server, don't override\n const ids = await newsActions.getArchivedPosts(site);\n if (!_.isNil(ids)) dispatch(archivedPostsLoaded(ids));\n const show = await newsActions.getArchivedPostsShow(site);\n if (!_.isNil(show)) dispatch(setShowArchive(show));\n } catch (error) {\n console.log('getArchivedPostSetting', error);\n }\n };\n};\n\nexport const archivedPostsLoaded = ids => {\n return {\n type: LOAD_ARCHIVED_POSTS,\n payload: ids,\n };\n};\n\nexport const archivePost = id => {\n return {\n type: ARCHIVE_POST,\n payload: id,\n };\n};\n\nexport const unarchivePost = id => {\n return {\n type: UNARCHIVE_POST,\n payload: id,\n };\n};\n\nexport const setShowArchive = show => {\n return {\n type: SET_SHOW_ARCHIVE,\n payload: show,\n };\n};\n"],"mappings":"AAAA,OAAOA,CAAC,MAAM,QAAQ;AACtB,SACEC,WAAW,EACXC,mBAAmB,EACnBC,UAAU,EACVC,oBAAoB,EACpBC,qBAAqB,EACrBC,mBAAmB,EACnBC,YAAY,EACZC,cAAc,EACdC,gBAAgB,QACX,SAAS;AAChB,SAASC,WAAW,QAAQ,WAAW;AAEvC,OAAO,MAAMC,UAAU,GAAGA,CAACC,IAAI,EAAEC,WAAW,EAAEC,SAAS,KAAK;EAC1D,OAAO;IACLC,IAAI,EAAEd,WAAW;IACjBe,OAAO,EAAE;MAAEC,IAAI,EAAEL,IAAI;MAAEC,WAAW;MAAEC;IAAU;EAChD,CAAC;AACH,CAAC;AACD,OAAO,MAAMI,kBAAkB,GAAGN,IAAI,IAAI;EACxC,OAAO;IACLG,IAAI,EAAEb,mBAAmB;IACzBc,OAAO,EAAEJ;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMO,SAAS,GAAGP,IAAI,IAAI;EAC/B,OAAO;IACLG,IAAI,EAAEZ,UAAU;IAChBa,OAAO,EAAEJ;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMQ,mBAAmB,GAAGC,eAAe,IAAI;EACpD,OAAO;IACLN,IAAI,EAAEX,oBAAoB;IAC1BY,OAAO,EAAEK;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAGC,EAAE,IAAI;EACxC,OAAO;IACLR,IAAI,EAAEV,qBAAqB;IAC3BW,OAAO,EAAEO;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,sBAAsB,GAAGC,IAAI,IAAI;EAC5C,OAAO,MAAMC,QAAQ,IAAI;IACvB,IAAI;MACF;MACA,MAAMC,GAAG,GAAG,MAAMjB,WAAW,CAACkB,gBAAgB,CAACH,IAAI,CAAC;MACpD,IAAI,CAACzB,CAAC,CAAC6B,KAAK,CAACF,GAAG,CAAC,EAAED,QAAQ,CAACI,mBAAmB,CAACH,GAAG,CAAC,CAAC;MACrD,MAAMI,IAAI,GAAG,MAAMrB,WAAW,CAACsB,oBAAoB,CAACP,IAAI,CAAC;MACzD,IAAI,CAACzB,CAAC,CAAC6B,KAAK,CAACE,IAAI,CAAC,EAAEL,QAAQ,CAACO,cAAc,CAACF,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,OAAOG,KAAK,EAAE;MACdC,OAAO,CAACC,GAAG,CAAC,wBAAwB,EAAEF,KAAK,CAAC;IAC9C;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMJ,mBAAmB,GAAGH,GAAG,IAAI;EACxC,OAAO;IACLZ,IAAI,EAAET,mBAAmB;IACzBU,OAAO,EAAEW;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMU,WAAW,GAAGd,EAAE,IAAI;EAC/B,OAAO;IACLR,IAAI,EAAER,YAAY;IAClBS,OAAO,EAAEO;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMe,aAAa,GAAGf,EAAE,IAAI;EACjC,OAAO;IACLR,IAAI,EAAEP,cAAc;IACpBQ,OAAO,EAAEO;EACX,CAAC;AACH,CAAC;AAED,OAAO,MAAMU,cAAc,GAAGF,IAAI,IAAI;EACpC,OAAO;IACLhB,IAAI,EAAEN,gBAAgB;IACtBO,OAAO,EAAEe;EACX,CAAC;AACH,CAAC"}
@@ -9,6 +9,7 @@ export const FEATUREDNEWS_LOADED = values.actionFeaturedNewsLoaded;
9
9
  export const NEWS_ADDED = values.actionNewsAdded;
10
10
  export const LOAD_NEWSSUBMISSIONS = values.actionLoadNewsSubmissions;
11
11
  export const REMOVE_NEWSSUBMISSION = values.actionRemoveNewsSubmission;
12
+ export const LOAD_ARCHIVED_POSTS = `LOAD_ARCHIVED_POSTS_${values.featureKey}`;
12
13
  export const ARCHIVE_POST = `ARCHIVE_POST_${values.featureKey}`;
13
14
  export const UNARCHIVE_POST = `UNARCHIVE_POST_${values.featureKey}`;
14
15
  export const SET_SHOW_ARCHIVE = `SET_SHOW_ARCHIVE_${values.featureKey}`;
@@ -1 +1 @@
1
- {"version":3,"names":["ActionTypes","values","LOGOUT","CHANGE_ROLE","NEWS_LOADED","actionNewsLoaded","FEATUREDNEWS_LOADED","actionFeaturedNewsLoaded","NEWS_ADDED","actionNewsAdded","LOAD_NEWSSUBMISSIONS","actionLoadNewsSubmissions","REMOVE_NEWSSUBMISSION","actionRemoveNewsSubmission","ARCHIVE_POST","featureKey","UNARCHIVE_POST","SET_SHOW_ARCHIVE"],"sources":["types.js"],"sourcesContent":["import { ActionTypes } from '../core.config';\nimport { values } from '../values.config';\n\nexport const LOGOUT = ActionTypes.LOGOUT;\nexport const CHANGE_ROLE = ActionTypes.CHANGE_ROLE;\n\n// TODO: Define action types for example,\nexport const NEWS_LOADED = values.actionNewsLoaded;\nexport const FEATUREDNEWS_LOADED = values.actionFeaturedNewsLoaded;\nexport const NEWS_ADDED = values.actionNewsAdded;\nexport const LOAD_NEWSSUBMISSIONS = values.actionLoadNewsSubmissions;\nexport const REMOVE_NEWSSUBMISSION = values.actionRemoveNewsSubmission;\nexport const ARCHIVE_POST = `ARCHIVE_POST_${values.featureKey}`;\nexport const UNARCHIVE_POST = `UNARCHIVE_POST_${values.featureKey}`;\nexport const SET_SHOW_ARCHIVE = `SET_SHOW_ARCHIVE_${values.featureKey}`;\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,OAAO,MAAMC,MAAM,GAAGF,WAAW,CAACE,MAAM;AACxC,OAAO,MAAMC,WAAW,GAAGH,WAAW,CAACG,WAAW;;AAElD;AACA,OAAO,MAAMC,WAAW,GAAGH,MAAM,CAACI,gBAAgB;AAClD,OAAO,MAAMC,mBAAmB,GAAGL,MAAM,CAACM,wBAAwB;AAClE,OAAO,MAAMC,UAAU,GAAGP,MAAM,CAACQ,eAAe;AAChD,OAAO,MAAMC,oBAAoB,GAAGT,MAAM,CAACU,yBAAyB;AACpE,OAAO,MAAMC,qBAAqB,GAAGX,MAAM,CAACY,0BAA0B;AACtE,OAAO,MAAMC,YAAY,GAAI,gBAAeb,MAAM,CAACc,UAAW,EAAC;AAC/D,OAAO,MAAMC,cAAc,GAAI,kBAAiBf,MAAM,CAACc,UAAW,EAAC;AACnE,OAAO,MAAME,gBAAgB,GAAI,oBAAmBhB,MAAM,CAACc,UAAW,EAAC"}
1
+ {"version":3,"names":["ActionTypes","values","LOGOUT","CHANGE_ROLE","NEWS_LOADED","actionNewsLoaded","FEATUREDNEWS_LOADED","actionFeaturedNewsLoaded","NEWS_ADDED","actionNewsAdded","LOAD_NEWSSUBMISSIONS","actionLoadNewsSubmissions","REMOVE_NEWSSUBMISSION","actionRemoveNewsSubmission","LOAD_ARCHIVED_POSTS","featureKey","ARCHIVE_POST","UNARCHIVE_POST","SET_SHOW_ARCHIVE"],"sources":["types.js"],"sourcesContent":["import { ActionTypes } from '../core.config';\nimport { values } from '../values.config';\n\nexport const LOGOUT = ActionTypes.LOGOUT;\nexport const CHANGE_ROLE = ActionTypes.CHANGE_ROLE;\n\n// TODO: Define action types for example,\nexport const NEWS_LOADED = values.actionNewsLoaded;\nexport const FEATUREDNEWS_LOADED = values.actionFeaturedNewsLoaded;\nexport const NEWS_ADDED = values.actionNewsAdded;\nexport const LOAD_NEWSSUBMISSIONS = values.actionLoadNewsSubmissions;\nexport const REMOVE_NEWSSUBMISSION = values.actionRemoveNewsSubmission;\nexport const LOAD_ARCHIVED_POSTS = `LOAD_ARCHIVED_POSTS_${values.featureKey}`;\nexport const ARCHIVE_POST = `ARCHIVE_POST_${values.featureKey}`;\nexport const UNARCHIVE_POST = `UNARCHIVE_POST_${values.featureKey}`;\nexport const SET_SHOW_ARCHIVE = `SET_SHOW_ARCHIVE_${values.featureKey}`;\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,OAAO,MAAMC,MAAM,GAAGF,WAAW,CAACE,MAAM;AACxC,OAAO,MAAMC,WAAW,GAAGH,WAAW,CAACG,WAAW;;AAElD;AACA,OAAO,MAAMC,WAAW,GAAGH,MAAM,CAACI,gBAAgB;AAClD,OAAO,MAAMC,mBAAmB,GAAGL,MAAM,CAACM,wBAAwB;AAClE,OAAO,MAAMC,UAAU,GAAGP,MAAM,CAACQ,eAAe;AAChD,OAAO,MAAMC,oBAAoB,GAAGT,MAAM,CAACU,yBAAyB;AACpE,OAAO,MAAMC,qBAAqB,GAAGX,MAAM,CAACY,0BAA0B;AACtE,OAAO,MAAMC,mBAAmB,GAAI,uBAAsBb,MAAM,CAACc,UAAW,EAAC;AAC7E,OAAO,MAAMC,YAAY,GAAI,gBAAef,MAAM,CAACc,UAAW,EAAC;AAC/D,OAAO,MAAME,cAAc,GAAI,kBAAiBhB,MAAM,CAACc,UAAW,EAAC;AACnE,OAAO,MAAMG,gBAAgB,GAAI,oBAAmBjB,MAAM,CAACc,UAAW,EAAC"}
@@ -4,8 +4,10 @@ import _ from 'lodash';
4
4
  import { connect } from 'react-redux';
5
5
  import { values } from '../../values.config';
6
6
  import { setShowArchive } from '../../actions';
7
+ import { newsActions } from '../../webapi';
7
8
  import { TextStyle } from '../common';
8
9
  const ArchiveToggle = ({
10
+ site,
9
11
  showArchive,
10
12
  archiveList,
11
13
  setShowArchive,
@@ -18,13 +20,18 @@ const ArchiveToggle = ({
18
20
  style: [styles.section, sectionStyle]
19
21
  }, /*#__PURE__*/React.createElement(Switch, {
20
22
  value: showArchive,
21
- onValueChange: () => setShowArchive(!showArchive),
23
+ onValueChange: () => {
24
+ const newValue = !showArchive;
25
+ setShowArchive(newValue);
26
+ newsActions.setArchivedPostsShow(site, newValue);
27
+ },
22
28
  style: styles.switch
23
29
  }), /*#__PURE__*/React.createElement(TextStyle, {
24
30
  type: "label"
25
31
  }, "Show archived posts"));
26
32
  };
27
33
  const mapStateToProps = state => ({
34
+ site: state.user.site,
28
35
  showArchive: state[values.reducerKey].showArchive,
29
36
  archiveList: state[values.reducerKey].archive || []
30
37
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","Switch","_","connect","values","setShowArchive","TextStyle","ArchiveToggle","showArchive","archiveList","sectionStyle","isEmpty","createElement","style","styles","section","value","onValueChange","switch","type","mapStateToProps","state","reducerKey","archive","flexDirection","alignItems","marginRight"],"sources":["ArchiveToggle.js"],"sourcesContent":["import React from 'react';\nimport { View, Switch } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { values } from '../../values.config';\nimport { setShowArchive } from '../../actions';\nimport { TextStyle } from '../common';\n\nconst ArchiveToggle = ({ showArchive, archiveList, setShowArchive, sectionStyle }) => {\n if (_.isEmpty(archiveList)) {\n return null;\n }\n return (\n <View style={[styles.section, sectionStyle]}>\n <Switch value={showArchive} onValueChange={() => setShowArchive(!showArchive)} style={styles.switch} />\n <TextStyle type=\"label\">Show archived posts</TextStyle>\n </View>\n );\n};\n\nconst mapStateToProps = state => ({\n showArchive: state[values.reducerKey].showArchive,\n archiveList: state[values.reducerKey].archive || [],\n});\n\nconst styles = {\n section: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n switch: {\n marginRight: 4,\n },\n};\n\nexport default connect(mapStateToProps, { setShowArchive })(ArchiveToggle);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,MAAM,QAAQ,cAAc;AAC3C,OAAOC,CAAC,MAAM,QAAQ;AACtB,SAASC,OAAO,QAAQ,aAAa;AACrC,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,SAAS,QAAQ,WAAW;AAErC,MAAMC,aAAa,GAAGA,CAAC;EAAEC,WAAW;EAAEC,WAAW;EAAEJ,cAAc;EAAEK;AAAa,CAAC,KAAK;EACpF,IAAIR,CAAC,CAACS,OAAO,CAACF,WAAW,CAAC,EAAE;IAC1B,OAAO,IAAI;EACb;EACA,oBACEV,KAAA,CAAAa,aAAA,CAACZ,IAAI;IAACa,KAAK,EAAE,CAACC,MAAM,CAACC,OAAO,EAAEL,YAAY;EAAE,gBAC1CX,KAAA,CAAAa,aAAA,CAACX,MAAM;IAACe,KAAK,EAAER,WAAY;IAACS,aAAa,EAAEA,CAAA,KAAMZ,cAAc,CAAC,CAACG,WAAW,CAAE;IAACK,KAAK,EAAEC,MAAM,CAACI;EAAO,CAAE,CAAC,eACvGnB,KAAA,CAAAa,aAAA,CAACN,SAAS;IAACa,IAAI,EAAC;EAAO,GAAC,qBAA8B,CAClD,CAAC;AAEX,CAAC;AAED,MAAMC,eAAe,GAAGC,KAAK,KAAK;EAChCb,WAAW,EAAEa,KAAK,CAACjB,MAAM,CAACkB,UAAU,CAAC,CAACd,WAAW;EACjDC,WAAW,EAAEY,KAAK,CAACjB,MAAM,CAACkB,UAAU,CAAC,CAACC,OAAO,IAAI;AACnD,CAAC,CAAC;AAEF,MAAMT,MAAM,GAAG;EACbC,OAAO,EAAE;IACPS,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACDP,MAAM,EAAE;IACNQ,WAAW,EAAE;EACf;AACF,CAAC;AAED,eAAevB,OAAO,CAACiB,eAAe,EAAE;EAAEf;AAAe,CAAC,CAAC,CAACE,aAAa,CAAC"}
1
+ {"version":3,"names":["React","View","Switch","_","connect","values","setShowArchive","newsActions","TextStyle","ArchiveToggle","site","showArchive","archiveList","sectionStyle","isEmpty","createElement","style","styles","section","value","onValueChange","newValue","setArchivedPostsShow","switch","type","mapStateToProps","state","user","reducerKey","archive","flexDirection","alignItems","marginRight"],"sources":["ArchiveToggle.js"],"sourcesContent":["import React from 'react';\nimport { View, Switch } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { values } from '../../values.config';\nimport { setShowArchive } from '../../actions';\nimport { newsActions } from '../../webapi';\nimport { TextStyle } from '../common';\n\nconst ArchiveToggle = ({ site, showArchive, archiveList, setShowArchive, sectionStyle }) => {\n if (_.isEmpty(archiveList)) {\n return null;\n }\n return (\n <View style={[styles.section, sectionStyle]}>\n <Switch\n value={showArchive}\n onValueChange={() => {\n const newValue = !showArchive;\n setShowArchive(newValue);\n newsActions.setArchivedPostsShow(site, newValue);\n }}\n style={styles.switch}\n />\n <TextStyle type=\"label\">Show archived posts</TextStyle>\n </View>\n );\n};\n\nconst mapStateToProps = state => ({\n site: state.user.site,\n showArchive: state[values.reducerKey].showArchive,\n archiveList: state[values.reducerKey].archive || [],\n});\n\nconst styles = {\n section: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n switch: {\n marginRight: 4,\n },\n};\n\nexport default connect(mapStateToProps, { setShowArchive })(ArchiveToggle);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,MAAM,QAAQ,cAAc;AAC3C,OAAOC,CAAC,MAAM,QAAQ;AACtB,SAASC,OAAO,QAAQ,aAAa;AACrC,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,WAAW,QAAQ,cAAc;AAC1C,SAASC,SAAS,QAAQ,WAAW;AAErC,MAAMC,aAAa,GAAGA,CAAC;EAAEC,IAAI;EAAEC,WAAW;EAAEC,WAAW;EAAEN,cAAc;EAAEO;AAAa,CAAC,KAAK;EAC1F,IAAIV,CAAC,CAACW,OAAO,CAACF,WAAW,CAAC,EAAE;IAC1B,OAAO,IAAI;EACb;EACA,oBACEZ,KAAA,CAAAe,aAAA,CAACd,IAAI;IAACe,KAAK,EAAE,CAACC,MAAM,CAACC,OAAO,EAAEL,YAAY;EAAE,gBAC1Cb,KAAA,CAAAe,aAAA,CAACb,MAAM;IACLiB,KAAK,EAAER,WAAY;IACnBS,aAAa,EAAEA,CAAA,KAAM;MACnB,MAAMC,QAAQ,GAAG,CAACV,WAAW;MAC7BL,cAAc,CAACe,QAAQ,CAAC;MACxBd,WAAW,CAACe,oBAAoB,CAACZ,IAAI,EAAEW,QAAQ,CAAC;IAClD,CAAE;IACFL,KAAK,EAAEC,MAAM,CAACM;EAAO,CACtB,CAAC,eACFvB,KAAA,CAAAe,aAAA,CAACP,SAAS;IAACgB,IAAI,EAAC;EAAO,GAAC,qBAA8B,CAClD,CAAC;AAEX,CAAC;AAED,MAAMC,eAAe,GAAGC,KAAK,KAAK;EAChChB,IAAI,EAAEgB,KAAK,CAACC,IAAI,CAACjB,IAAI;EACrBC,WAAW,EAAEe,KAAK,CAACrB,MAAM,CAACuB,UAAU,CAAC,CAACjB,WAAW;EACjDC,WAAW,EAAEc,KAAK,CAACrB,MAAM,CAACuB,UAAU,CAAC,CAACC,OAAO,IAAI;AACnD,CAAC,CAAC;AAEF,MAAMZ,MAAM,GAAG;EACbC,OAAO,EAAE;IACPY,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACDR,MAAM,EAAE;IACNS,WAAW,EAAE;EACf;AACF,CAAC;AAED,eAAe5B,OAAO,CAACqB,eAAe,EAAE;EAAEnB;AAAe,CAAC,CAAC,CAACG,aAAa,CAAC"}
@@ -7,7 +7,7 @@ import _ from 'lodash';
7
7
  import moment from 'moment';
8
8
  import { connect } from 'react-redux';
9
9
  import { newsActions } from '../../webapi';
10
- import { newsLoaded } from '../../actions';
10
+ import { newsLoaded, getArchivedPostSetting } from '../../actions';
11
11
  import { InlineButton, EmptyStateMain } from '../common';
12
12
  import { getSiteSettingFromState, getMainBrandingColourFromState } from '../../js';
13
13
  import NewsletterEntryPreview from './NewsletterEntryPreview';
@@ -22,6 +22,7 @@ class NewsList extends Component {
22
22
  try {
23
23
  await this.loadMoreNews(false);
24
24
  await this.loadTaggedNews();
25
+ this.props.getArchivedPostSetting(this.props.site);
25
26
  } catch (error) {
26
27
  console.log('NewsList - refresh error', error);
27
28
  } finally {
@@ -207,7 +208,8 @@ const mapStateToProps = state => {
207
208
  };
208
209
  };
209
210
  export default connect(mapStateToProps, {
210
- newsLoaded
211
+ newsLoaded,
212
+ getArchivedPostSetting
211
213
  }, null, {
212
214
  forwardRef: true
213
215
  })(NewsList);
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","View","StyleSheet","FlatList","_","moment","connect","newsActions","newsLoaded","InlineButton","EmptyStateMain","getSiteSettingFromState","getMainBrandingColourFromState","NewsletterEntryPreview","CONST_STRINGS","values","ArchiveToggle","NewsList","constructor","props","_defineProperty","onLoadingChanged","loadMoreNews","loadTaggedNews","error","console","log","past","state","newsReachedEnd","isEmpty","news","isNewsLimited","userToBrowse","user","uid","weekAgo","utc","add","valueOf","fullRefresh","lastFullRefresh","oldestNews","maxBy","filter","n","Private","UserId","UnixTimestampReverse","res","getRecent","site","Number","MAX_SAFE_INTEGER","newNews","uniqBy","orderBy","data","setState","now","lastYear","getTaggedNews","isUndefined","userTermsUnaccepted","loading","callback","showAllNews","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","getNewsData","filteredNews","showArchive","archiveList","includes","RowId","slice","getEmptyStateText","options","EmptyText","EMPTY_NEWS","removeNewsLimit","useLargeNews","renderNewsFooter","length","createElement","style","styles","moreNewsContainer","onPress","bind","color","colourBrandingMain","height","renderEmptyList","title","marginHorizontal","renderHeader","ListHeaderComponent","sectionStyle","sectionPadding","renderList","keyboardShouldPersistTaps","ListEmptyComponent","keyExtractor","item","Id","renderItem","index","key","update","ListFooterComponent","onEndReached","undefined","onEndReachedThreshold","render","container","create","flex","backgroundColor","alignItems","paddingHorizontal","paddingBottom","mapStateToProps","notifications","reducerKey","list","optionUseLargeNews","updateKey","archive","forwardRef"],"sources":["NewsList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, FlatList } from 'react-native';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\nimport { newsActions } from '../../webapi';\nimport { newsLoaded } from '../../actions';\nimport { InlineButton, EmptyStateMain } from '../common';\nimport { getSiteSettingFromState, getMainBrandingColourFromState } from '../../js';\nimport NewsletterEntryPreview from './NewsletterEntryPreview';\nimport { CONST_STRINGS } from '../../config';\nimport { values } from '../../values.config';\nimport ArchiveToggle from './ArchiveToggle';\n\nclass NewsList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n showAllNews: false,\n newsReachedEnd: false,\n };\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.userToBrowse !== this.props.userToBrowse || (!prevProps.dataUpdated && this.props.dataUpdated)) this.refresh();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n await this.loadMoreNews(false);\n await this.loadTaggedNews();\n } catch (error) {\n console.log('NewsList - refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n loadMoreNews = async (past = true) => {\n if (past && this.state.newsReachedEnd) return;\n if (past && !_.isEmpty(this.props.news) && this.isNewsLimited()) return;\n\n const userToBrowse = this.props.userToBrowse || this.props.user.uid;\n const weekAgo = moment\n .utc()\n .add(-7, 'd')\n .valueOf();\n const fullRefresh = !this.props.lastFullRefresh || this.props.lastFullRefresh < weekAgo;\n\n const oldestNews =\n past && !fullRefresh\n ? _.maxBy(\n _.filter(this.props.news, n => {\n return !n.Private && !n.UserId;\n }),\n n => {\n return n.UnixTimestampReverse;\n },\n )\n : null;\n\n const res = await newsActions.getRecent(\n this.props.site,\n 20,\n oldestNews ? oldestNews.UnixTimestampReverse : Number.MAX_SAFE_INTEGER - moment.utc().valueOf(),\n );\n // console.log('got recent news', res.data.length);\n\n // ensure user hasn't changed\n if (userToBrowse === this.props.userToBrowse || this.props.user.uid) {\n const newNews = _.uniqBy(_.orderBy(fullRefresh ? [...res.data] : [...res.data, ...this.props.news], 'UnixTimestamp', 'desc'), 'Id');\n this.props.newsLoaded(newNews, fullRefresh, moment.utc().valueOf());\n if (_.isEmpty(res.data)) {\n this.setState({\n newsReachedEnd: true,\n });\n }\n }\n };\n\n loadTaggedNews = async () => {\n const userToBrowse = this.props.userToBrowse || this.props.user.uid;\n const now = moment();\n const lastYear = moment().add(-1, 'Y');\n\n const res = await newsActions.getTaggedNews(\n userToBrowse,\n Number.MAX_SAFE_INTEGER - now.valueOf(),\n Number.MAX_SAFE_INTEGER - lastYear.valueOf(),\n );\n // console.log('got tagged news', res.data.length);\n\n // ensure user hasn't changed\n if (userToBrowse === this.props.userToBrowse || this.props.user.uid) {\n if (!_.isUndefined(res.data.userTermsUnaccepted) && res.data.userTermsUnaccepted) {\n // this.props.newsLoaded([]);\n } else {\n const newNews = _.uniqBy(_.orderBy([...res.data, ...this.props.news], 'UnixTimestamp', 'desc'), 'Id');\n this.props.newsLoaded(newNews);\n }\n }\n };\n\n getNewsData() {\n const filteredNews = _.filter(this.props.news, n => {\n if (this.props.showArchive) {\n return true;\n }\n return !this.props.archiveList.includes(n.RowId);\n });\n if (this.isNewsLimited()) {\n return filteredNews.slice(0, 3);\n }\n return filteredNews;\n }\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return CONST_STRINGS.EMPTY_NEWS;\n }\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n removeNewsLimit() {\n this.setState({ showAllNews: true });\n }\n\n isNewsLimited() {\n return this.props.useLargeNews && !this.state.showAllNews;\n }\n\n renderNewsFooter() {\n const data = this.getNewsData();\n\n if (data && data.length > 0 && this.isNewsLimited()) {\n return (\n <View style={styles.moreNewsContainer}>\n <InlineButton onPress={this.removeNewsLimit.bind(this)} color={this.props.colourBrandingMain}>\n See more news\n </InlineButton>\n <View style={{ height: 16 }} />\n </View>\n );\n }\n return <View style={{ height: 16 }} />;\n }\n\n renderEmptyList() {\n return this.state.loading ? null : <EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderHeader() {\n return (\n <View>\n {this.props.ListHeaderComponent}\n <ArchiveToggle sectionStyle={styles.sectionPadding} />\n </View>\n );\n }\n\n renderList() {\n return (\n <FlatList\n keyboardShouldPersistTaps=\"always\"\n data={this.getNewsData()}\n ListEmptyComponent={this.renderEmptyList()}\n ListHeaderComponent={this.renderHeader()}\n keyExtractor={item => item.Id}\n renderItem={({ item, index }) => <NewsletterEntryPreview key={item.Id} index={index} update={item} />}\n ListFooterComponent={this.renderNewsFooter()}\n onEndReached={this.loadMoreNews.bind(this, undefined)}\n onEndReachedThreshold={0.5}\n />\n );\n }\n\n render() {\n return <View style={[styles.container, this.props.style]}>{this.renderList()}</View>;\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n moreNewsContainer: {\n alignItems: 'center',\n },\n sectionPadding: {\n paddingHorizontal: 16,\n paddingBottom: 16,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, notifications } = state;\n\n return {\n news: state[values.reducerKey].list,\n user,\n site: user.site,\n colourBrandingMain: getMainBrandingColourFromState(state),\n useLargeNews: getSiteSettingFromState(state, values.optionUseLargeNews, false),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n lastFullRefresh: state[values.reducerKey].lastFullRefresh,\n archiveList: state[values.reducerKey].archive || [],\n showArchive: state[values.reducerKey].showArchive,\n };\n};\n\nexport default connect(mapStateToProps, { newsLoaded }, null, { forwardRef: true })(NewsList);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Component","View","StyleSheet","FlatList","_","moment","connect","newsActions","newsLoaded","getArchivedPostSetting","InlineButton","EmptyStateMain","getSiteSettingFromState","getMainBrandingColourFromState","NewsletterEntryPreview","CONST_STRINGS","values","ArchiveToggle","NewsList","constructor","props","_defineProperty","onLoadingChanged","loadMoreNews","loadTaggedNews","site","error","console","log","past","state","newsReachedEnd","isEmpty","news","isNewsLimited","userToBrowse","user","uid","weekAgo","utc","add","valueOf","fullRefresh","lastFullRefresh","oldestNews","maxBy","filter","n","Private","UserId","UnixTimestampReverse","res","getRecent","Number","MAX_SAFE_INTEGER","newNews","uniqBy","orderBy","data","setState","now","lastYear","getTaggedNews","isUndefined","userTermsUnaccepted","loading","callback","showAllNews","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","getNewsData","filteredNews","showArchive","archiveList","includes","RowId","slice","getEmptyStateText","options","EmptyText","EMPTY_NEWS","removeNewsLimit","useLargeNews","renderNewsFooter","length","createElement","style","styles","moreNewsContainer","onPress","bind","color","colourBrandingMain","height","renderEmptyList","title","marginHorizontal","renderHeader","ListHeaderComponent","sectionStyle","sectionPadding","renderList","keyboardShouldPersistTaps","ListEmptyComponent","keyExtractor","item","Id","renderItem","index","key","update","ListFooterComponent","onEndReached","undefined","onEndReachedThreshold","render","container","create","flex","backgroundColor","alignItems","paddingHorizontal","paddingBottom","mapStateToProps","notifications","reducerKey","list","optionUseLargeNews","updateKey","archive","forwardRef"],"sources":["NewsList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, FlatList } from 'react-native';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\nimport { newsActions } from '../../webapi';\nimport { newsLoaded, getArchivedPostSetting } from '../../actions';\nimport { InlineButton, EmptyStateMain } from '../common';\nimport { getSiteSettingFromState, getMainBrandingColourFromState } from '../../js';\nimport NewsletterEntryPreview from './NewsletterEntryPreview';\nimport { CONST_STRINGS } from '../../config';\nimport { values } from '../../values.config';\nimport ArchiveToggle from './ArchiveToggle';\n\nclass NewsList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n showAllNews: false,\n newsReachedEnd: false,\n };\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.userToBrowse !== this.props.userToBrowse || (!prevProps.dataUpdated && this.props.dataUpdated)) this.refresh();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n await this.loadMoreNews(false);\n await this.loadTaggedNews();\n this.props.getArchivedPostSetting(this.props.site);\n } catch (error) {\n console.log('NewsList - refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n loadMoreNews = async (past = true) => {\n if (past && this.state.newsReachedEnd) return;\n if (past && !_.isEmpty(this.props.news) && this.isNewsLimited()) return;\n\n const userToBrowse = this.props.userToBrowse || this.props.user.uid;\n const weekAgo = moment\n .utc()\n .add(-7, 'd')\n .valueOf();\n const fullRefresh = !this.props.lastFullRefresh || this.props.lastFullRefresh < weekAgo;\n\n const oldestNews =\n past && !fullRefresh\n ? _.maxBy(\n _.filter(this.props.news, n => {\n return !n.Private && !n.UserId;\n }),\n n => {\n return n.UnixTimestampReverse;\n },\n )\n : null;\n\n const res = await newsActions.getRecent(\n this.props.site,\n 20,\n oldestNews ? oldestNews.UnixTimestampReverse : Number.MAX_SAFE_INTEGER - moment.utc().valueOf(),\n );\n // console.log('got recent news', res.data.length);\n\n // ensure user hasn't changed\n if (userToBrowse === this.props.userToBrowse || this.props.user.uid) {\n const newNews = _.uniqBy(_.orderBy(fullRefresh ? [...res.data] : [...res.data, ...this.props.news], 'UnixTimestamp', 'desc'), 'Id');\n this.props.newsLoaded(newNews, fullRefresh, moment.utc().valueOf());\n if (_.isEmpty(res.data)) {\n this.setState({\n newsReachedEnd: true,\n });\n }\n }\n };\n\n loadTaggedNews = async () => {\n const userToBrowse = this.props.userToBrowse || this.props.user.uid;\n const now = moment();\n const lastYear = moment().add(-1, 'Y');\n\n const res = await newsActions.getTaggedNews(\n userToBrowse,\n Number.MAX_SAFE_INTEGER - now.valueOf(),\n Number.MAX_SAFE_INTEGER - lastYear.valueOf(),\n );\n // console.log('got tagged news', res.data.length);\n\n // ensure user hasn't changed\n if (userToBrowse === this.props.userToBrowse || this.props.user.uid) {\n if (!_.isUndefined(res.data.userTermsUnaccepted) && res.data.userTermsUnaccepted) {\n // this.props.newsLoaded([]);\n } else {\n const newNews = _.uniqBy(_.orderBy([...res.data, ...this.props.news], 'UnixTimestamp', 'desc'), 'Id');\n this.props.newsLoaded(newNews);\n }\n }\n };\n\n getNewsData() {\n const filteredNews = _.filter(this.props.news, n => {\n if (this.props.showArchive) {\n return true;\n }\n return !this.props.archiveList.includes(n.RowId);\n });\n if (this.isNewsLimited()) {\n return filteredNews.slice(0, 3);\n }\n return filteredNews;\n }\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return CONST_STRINGS.EMPTY_NEWS;\n }\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n removeNewsLimit() {\n this.setState({ showAllNews: true });\n }\n\n isNewsLimited() {\n return this.props.useLargeNews && !this.state.showAllNews;\n }\n\n renderNewsFooter() {\n const data = this.getNewsData();\n\n if (data && data.length > 0 && this.isNewsLimited()) {\n return (\n <View style={styles.moreNewsContainer}>\n <InlineButton onPress={this.removeNewsLimit.bind(this)} color={this.props.colourBrandingMain}>\n See more news\n </InlineButton>\n <View style={{ height: 16 }} />\n </View>\n );\n }\n return <View style={{ height: 16 }} />;\n }\n\n renderEmptyList() {\n return this.state.loading ? null : <EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderHeader() {\n return (\n <View>\n {this.props.ListHeaderComponent}\n <ArchiveToggle sectionStyle={styles.sectionPadding} />\n </View>\n );\n }\n\n renderList() {\n return (\n <FlatList\n keyboardShouldPersistTaps=\"always\"\n data={this.getNewsData()}\n ListEmptyComponent={this.renderEmptyList()}\n ListHeaderComponent={this.renderHeader()}\n keyExtractor={item => item.Id}\n renderItem={({ item, index }) => <NewsletterEntryPreview key={item.Id} index={index} update={item} />}\n ListFooterComponent={this.renderNewsFooter()}\n onEndReached={this.loadMoreNews.bind(this, undefined)}\n onEndReachedThreshold={0.5}\n />\n );\n }\n\n render() {\n return <View style={[styles.container, this.props.style]}>{this.renderList()}</View>;\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n moreNewsContainer: {\n alignItems: 'center',\n },\n sectionPadding: {\n paddingHorizontal: 16,\n paddingBottom: 16,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, notifications } = state;\n\n return {\n news: state[values.reducerKey].list,\n user,\n site: user.site,\n colourBrandingMain: getMainBrandingColourFromState(state),\n useLargeNews: getSiteSettingFromState(state, values.optionUseLargeNews, false),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n lastFullRefresh: state[values.reducerKey].lastFullRefresh,\n archiveList: state[values.reducerKey].archive || [],\n showArchive: state[values.reducerKey].showArchive,\n };\n};\n\nexport default connect(mapStateToProps, { newsLoaded, getArchivedPostSetting }, null, { forwardRef: true })(NewsList);\n"],"mappings":"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"}
@@ -12,7 +12,6 @@ import NewsList from './NewsList';
12
12
  import Styles from '../../js/Styles';
13
13
  import { BaseComponents } from '../../feature.config';
14
14
  import { values } from '../../values.config';
15
- import ArchiveToggle from './ArchiveToggle';
16
15
  class NewsPage extends Component {
17
16
  constructor(props) {
18
17
  super(props);
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","View","StyleSheet","connect","_","Header","LoadingIndicator","StatusBarHeight","NavigationService","NewsList","Styles","BaseComponents","values","ArchiveToggle","NewsPage","constructor","props","_defineProperty","goBack","loading","setState","state","isHomeTab","componentDidMount","getParentRoute","getTitle","options","isEmpty","Title","title","tabTitle","strings","featureKey","textNews","renderHeader","createElement","text","rightContent","includes","user","hidden","style","styles","notificationContainer","NotificationBell","colourBrandingHeader","containerStyle","notificationBell","leftIcon","onPressLeft","onPressBack","render","container","visible","newsList","onLoadingChanged","create","flex","position","top","bottom","right","paddingTop","marginTop","mapStateToProps","_state$strings","config"],"sources":["NewsPage.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { Header, LoadingIndicator } from '../common';\nimport { StatusBarHeight } from '../../js';\nimport NavigationService from '../../js/NavigationService';\nimport NewsList from './NewsList';\nimport Styles from '../../js/Styles';\nimport { BaseComponents } from '../../feature.config';\nimport { values } from '../../values.config';\nimport ArchiveToggle from './ArchiveToggle';\n\nclass NewsPage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isHomeTab: false,\n loading: false,\n };\n }\n\n componentDidMount() {\n this.setState({ isHomeTab: !NavigationService.getParentRoute() });\n }\n\n getTitle() {\n if (this.props.options && !_.isEmpty(this.props.options.Title)) {\n return this.props.options.Title;\n }\n return this.props.title || this.props.tabTitle || this.props.strings[`${values.featureKey}_textNews`] || values.textNews;\n }\n\n onPressBack = () => {\n NavigationService.goBack();\n };\n\n onLoadingChanged = loading => {\n this.setState({ loading });\n };\n\n renderHeader() {\n const title = this.getTitle();\n if (this.state.isHomeTab) {\n return (\n <Header\n text={title}\n rightContent={\n _.includes(this.props.user.hidden, 'notifications') ? null : (\n <View style={styles.notificationContainer}>\n <BaseComponents.NotificationBell\n colourBrandingHeader={this.props.colourBrandingHeader}\n containerStyle={Styles.notificationBell}\n />\n </View>\n )\n }\n />\n );\n }\n return <Header leftIcon=\"angle-left\" onPressLeft={this.onPressBack} text={title} />;\n }\n\n render() {\n return (\n <View style={styles.container}>\n {this.renderHeader()}\n <LoadingIndicator visible={this.state.loading} />\n <NewsList style={styles.newsList} onLoadingChanged={this.onLoadingChanged} options={this.props.options} />\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n notificationContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n right: 0,\n paddingTop: StatusBarHeight(0),\n },\n newsList: {\n marginTop: 18,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n strings: state.strings?.config || {},\n };\n};\n\nexport default connect(mapStateToProps, {})(NewsPage);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Component","View","StyleSheet","connect","_","Header","LoadingIndicator","StatusBarHeight","NavigationService","NewsList","Styles","BaseComponents","values","NewsPage","constructor","props","_defineProperty","goBack","loading","setState","state","isHomeTab","componentDidMount","getParentRoute","getTitle","options","isEmpty","Title","title","tabTitle","strings","featureKey","textNews","renderHeader","createElement","text","rightContent","includes","user","hidden","style","styles","notificationContainer","NotificationBell","colourBrandingHeader","containerStyle","notificationBell","leftIcon","onPressLeft","onPressBack","render","container","visible","newsList","onLoadingChanged","create","flex","position","top","bottom","right","paddingTop","marginTop","mapStateToProps","_state$strings","config"],"sources":["NewsPage.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { Header, LoadingIndicator } from '../common';\nimport { StatusBarHeight } from '../../js';\nimport NavigationService from '../../js/NavigationService';\nimport NewsList from './NewsList';\nimport Styles from '../../js/Styles';\nimport { BaseComponents } from '../../feature.config';\nimport { values } from '../../values.config';\n\nclass NewsPage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isHomeTab: false,\n loading: false,\n };\n }\n\n componentDidMount() {\n this.setState({ isHomeTab: !NavigationService.getParentRoute() });\n }\n\n getTitle() {\n if (this.props.options && !_.isEmpty(this.props.options.Title)) {\n return this.props.options.Title;\n }\n return this.props.title || this.props.tabTitle || this.props.strings[`${values.featureKey}_textNews`] || values.textNews;\n }\n\n onPressBack = () => {\n NavigationService.goBack();\n };\n\n onLoadingChanged = loading => {\n this.setState({ loading });\n };\n\n renderHeader() {\n const title = this.getTitle();\n if (this.state.isHomeTab) {\n return (\n <Header\n text={title}\n rightContent={\n _.includes(this.props.user.hidden, 'notifications') ? null : (\n <View style={styles.notificationContainer}>\n <BaseComponents.NotificationBell\n colourBrandingHeader={this.props.colourBrandingHeader}\n containerStyle={Styles.notificationBell}\n />\n </View>\n )\n }\n />\n );\n }\n return <Header leftIcon=\"angle-left\" onPressLeft={this.onPressBack} text={title} />;\n }\n\n render() {\n return (\n <View style={styles.container}>\n {this.renderHeader()}\n <LoadingIndicator visible={this.state.loading} />\n <NewsList style={styles.newsList} onLoadingChanged={this.onLoadingChanged} options={this.props.options} />\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n notificationContainer: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n right: 0,\n paddingTop: StatusBarHeight(0),\n },\n newsList: {\n marginTop: 18,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n strings: state.strings?.config || {},\n };\n};\n\nexport default connect(mapStateToProps, {})(NewsPage);\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ import moment from 'moment';
8
8
  import _ from 'lodash';
9
9
  import { EmptyStateWidget, InlineButton, LoadingStateWidget } from '../common';
10
10
  import { newsActions } from '../../webapi';
11
- import { newsLoaded } from '../../actions';
11
+ import { newsLoaded, getArchivedPostSetting } from '../../actions';
12
12
  import { getMainBrandingColourFromState, TEXT_DARKEST } from '../../js';
13
13
  import NewsWidgetItem from './NewsWidgetItem';
14
14
  import ArchiveToggle from './ArchiveToggle';
@@ -24,6 +24,7 @@ class NewsWidget extends Component {
24
24
  try {
25
25
  await this.loadMoreNews();
26
26
  await this.loadTaggedNews();
27
+ this.props.getArchivedPostSetting(this.props.site);
27
28
  } catch (error) {
28
29
  console.log('NewsWidget - refresh error', error);
29
30
  } finally {
@@ -200,7 +201,8 @@ const mapStateToProps = state => {
200
201
  };
201
202
  };
202
203
  export default connect(mapStateToProps, {
203
- newsLoaded
204
+ newsLoaded,
205
+ getArchivedPostSetting
204
206
  }, null, {
205
207
  forwardRef: true
206
208
  })(NewsWidget);
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","Text","View","ScrollView","StyleSheet","connect","moment","_","EmptyStateWidget","InlineButton","LoadingStateWidget","newsActions","newsLoaded","getMainBrandingColourFromState","TEXT_DARKEST","NewsWidgetItem","ArchiveToggle","NavigationService","CONST_STRINGS","values","MAX_ITEMS","NewsWidget","constructor","props","_defineProperty","onLoadingChanged","loadMoreNews","loadTaggedNews","error","console","log","userToBrowse","user","uid","res","getRecent","site","Number","MAX_SAFE_INTEGER","utc","valueOf","newNews","uniqBy","orderBy","data","news","now","lastYear","add","getTaggedNews","isUndefined","userTermsUnaccepted","loading","callback","setState","state","navigate","screenNewsletter","innerNews","options","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","getTitle","isEmpty","Title","strings","featureKey","textNews","getEmptyStateText","EmptyText","EMPTY_NEWS","renderContent","filteredNews","filter","n","showArchive","archiveList","includes","RowId","createElement","style","styles","loadingPadding","height","title","horizontal","contentContainerStyle","paddingLeft","paddingRight","showsHorizontalScrollIndicator","slice","map","key","render","colourBrandingMain","sectionContainer","sectionPadding","sectionHeading","sectionTitle","onPress","onPressAll","color","touchableStyle","paddingTop","textStyle","sectionStyle","create","backgroundColor","paddingHorizontal","paddingBottom","marginBottom","flexDirection","alignContent","justifyContent","fontFamily","fontSize","mapStateToProps","_state$strings","notifications","reducerKey","list","updateKey","config","archive","forwardRef"],"sources":["NewsWidget.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Text, View, ScrollView, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport { EmptyStateWidget, InlineButton, LoadingStateWidget } from '../common';\nimport { newsActions } from '../../webapi';\nimport { newsLoaded } from '../../actions';\nimport { getMainBrandingColourFromState, TEXT_DARKEST } from '../../js';\nimport NewsWidgetItem from './NewsWidgetItem';\nimport ArchiveToggle from './ArchiveToggle';\nimport NavigationService from '../../js/NavigationService';\nimport { CONST_STRINGS } from '../../config';\nimport { values } from '../../values.config';\n\nconst MAX_ITEMS = 10;\n\nclass NewsWidget extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n };\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.userToBrowse !== this.props.userToBrowse || (!prevProps.dataUpdated && this.props.dataUpdated)) this.refresh();\n }\n\n getTitle() {\n if (this.props.options && !_.isEmpty(this.props.options.Title)) {\n return this.props.options.Title;\n }\n return this.props.strings[`${values.featureKey}_textNews`] || values.textNews;\n }\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return CONST_STRINGS.EMPTY_NEWS;\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n await this.loadMoreNews();\n await this.loadTaggedNews();\n } catch (error) {\n console.log('NewsWidget - refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n loadMoreNews = async () => {\n const userToBrowse = this.props.userToBrowse || this.props.user.uid;\n const res = await newsActions.getRecent(this.props.site, 20, Number.MAX_SAFE_INTEGER - moment.utc().valueOf());\n // console.log('got recent news', res.data.length);\n\n // ensure user hasn't changed\n if (userToBrowse === (this.props.userToBrowse || this.props.user.uid)) {\n const newNews = _.uniqBy(_.orderBy([...res.data, ...this.props.news], 'UnixTimestamp', 'desc'), 'Id');\n this.props.newsLoaded(newNews);\n }\n };\n\n loadTaggedNews = async () => {\n const userToBrowse = this.props.userToBrowse || this.props.user.uid;\n const now = moment();\n const lastYear = moment().add(-1, 'Y');\n\n const res = await newsActions.getTaggedNews(\n userToBrowse,\n Number.MAX_SAFE_INTEGER - now.valueOf(),\n Number.MAX_SAFE_INTEGER - lastYear.valueOf(),\n );\n // console.log('got tagged news', res.data.length);\n\n // ensure user hasn't changed\n if (userToBrowse === (this.props.userToBrowse || this.props.user.uid)) {\n if (!_.isUndefined(res.data.userTermsUnaccepted) && res.data.userTermsUnaccepted) {\n // this.props.newsLoaded([]);\n } else {\n const newNews = _.uniqBy(_.orderBy([...res.data, ...this.props.news], 'UnixTimestamp', 'desc'), 'Id');\n this.props.newsLoaded(newNews);\n }\n }\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onPressAll = () => {\n NavigationService.navigate(values.screenNewsletter, { innerNews: true, options: this.props.options });\n };\n\n renderContent() {\n const { news } = this.props;\n const filteredNews = _.filter(news, n => {\n if (this.props.showArchive) {\n return true;\n }\n return !this.props.archiveList.includes(n.RowId);\n });\n if (_.isEmpty(filteredNews)) {\n if (this.state.loading) {\n return (\n <View style={styles.loadingPadding}>\n <LoadingStateWidget height={168} />\n </View>\n );\n }\n return (\n <View style={styles.loadingPadding}>\n <EmptyStateWidget title={this.getEmptyStateText()} height={168} />\n </View>\n );\n }\n return (\n <ScrollView horizontal contentContainerStyle={{ paddingLeft: 6, paddingRight: 8 }} showsHorizontalScrollIndicator={false}>\n {filteredNews.slice(0, MAX_ITEMS).map(news => (\n <NewsWidgetItem key={news.RowId} news={news} />\n ))}\n </ScrollView>\n );\n }\n\n render() {\n const { colourBrandingMain } = this.props;\n\n return (\n <View style={styles.sectionContainer}>\n <View style={styles.sectionPadding}>\n <View style={styles.sectionHeading}>\n <Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n <InlineButton\n onPress={this.onPressAll}\n color={colourBrandingMain}\n touchableStyle={{ paddingTop: 6 }}\n textStyle={{ color: '#fff' }}\n >\n View All\n </InlineButton>\n </View>\n </View>\n <ArchiveToggle sectionStyle={styles.sectionPadding} />\n {this.renderContent()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n sectionContainer: {\n backgroundColor: '#fff',\n paddingTop: 16,\n },\n sectionPadding: {\n paddingHorizontal: 16,\n paddingBottom: 6,\n },\n loadingPadding: {\n paddingHorizontal: 16,\n },\n sectionHeading: {\n marginBottom: 4,\n flexDirection: 'row',\n alignContent: 'flex-start',\n justifyContent: 'space-between',\n },\n sectionTitle: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n color: TEXT_DARKEST,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, notifications } = state;\n\n return {\n news: state[values.reducerKey].list,\n user,\n site: user.site,\n colourBrandingMain: getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n strings: state.strings?.config || {},\n archiveList: state[values.reducerKey].archive || [],\n showArchive: state[values.reducerKey].showArchive,\n };\n};\n\nexport default connect(mapStateToProps, { newsLoaded }, null, { forwardRef: true })(NewsWidget);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Component","Text","View","ScrollView","StyleSheet","connect","moment","_","EmptyStateWidget","InlineButton","LoadingStateWidget","newsActions","newsLoaded","getArchivedPostSetting","getMainBrandingColourFromState","TEXT_DARKEST","NewsWidgetItem","ArchiveToggle","NavigationService","CONST_STRINGS","values","MAX_ITEMS","NewsWidget","constructor","props","_defineProperty","onLoadingChanged","loadMoreNews","loadTaggedNews","site","error","console","log","userToBrowse","user","uid","res","getRecent","Number","MAX_SAFE_INTEGER","utc","valueOf","newNews","uniqBy","orderBy","data","news","now","lastYear","add","getTaggedNews","isUndefined","userTermsUnaccepted","loading","callback","setState","state","navigate","screenNewsletter","innerNews","options","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","getTitle","isEmpty","Title","strings","featureKey","textNews","getEmptyStateText","EmptyText","EMPTY_NEWS","renderContent","filteredNews","filter","n","showArchive","archiveList","includes","RowId","createElement","style","styles","loadingPadding","height","title","horizontal","contentContainerStyle","paddingLeft","paddingRight","showsHorizontalScrollIndicator","slice","map","key","render","colourBrandingMain","sectionContainer","sectionPadding","sectionHeading","sectionTitle","onPress","onPressAll","color","touchableStyle","paddingTop","textStyle","sectionStyle","create","backgroundColor","paddingHorizontal","paddingBottom","marginBottom","flexDirection","alignContent","justifyContent","fontFamily","fontSize","mapStateToProps","_state$strings","notifications","reducerKey","list","updateKey","config","archive","forwardRef"],"sources":["NewsWidget.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Text, View, ScrollView, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport { EmptyStateWidget, InlineButton, LoadingStateWidget } from '../common';\nimport { newsActions } from '../../webapi';\nimport { newsLoaded, getArchivedPostSetting } from '../../actions';\nimport { getMainBrandingColourFromState, TEXT_DARKEST } from '../../js';\nimport NewsWidgetItem from './NewsWidgetItem';\nimport ArchiveToggle from './ArchiveToggle';\nimport NavigationService from '../../js/NavigationService';\nimport { CONST_STRINGS } from '../../config';\nimport { values } from '../../values.config';\n\nconst MAX_ITEMS = 10;\n\nclass NewsWidget extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n };\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.userToBrowse !== this.props.userToBrowse || (!prevProps.dataUpdated && this.props.dataUpdated)) this.refresh();\n }\n\n getTitle() {\n if (this.props.options && !_.isEmpty(this.props.options.Title)) {\n return this.props.options.Title;\n }\n return this.props.strings[`${values.featureKey}_textNews`] || values.textNews;\n }\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return CONST_STRINGS.EMPTY_NEWS;\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n await this.loadMoreNews();\n await this.loadTaggedNews();\n this.props.getArchivedPostSetting(this.props.site);\n } catch (error) {\n console.log('NewsWidget - refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n loadMoreNews = async () => {\n const userToBrowse = this.props.userToBrowse || this.props.user.uid;\n const res = await newsActions.getRecent(this.props.site, 20, Number.MAX_SAFE_INTEGER - moment.utc().valueOf());\n // console.log('got recent news', res.data.length);\n\n // ensure user hasn't changed\n if (userToBrowse === (this.props.userToBrowse || this.props.user.uid)) {\n const newNews = _.uniqBy(_.orderBy([...res.data, ...this.props.news], 'UnixTimestamp', 'desc'), 'Id');\n this.props.newsLoaded(newNews);\n }\n };\n\n loadTaggedNews = async () => {\n const userToBrowse = this.props.userToBrowse || this.props.user.uid;\n const now = moment();\n const lastYear = moment().add(-1, 'Y');\n\n const res = await newsActions.getTaggedNews(\n userToBrowse,\n Number.MAX_SAFE_INTEGER - now.valueOf(),\n Number.MAX_SAFE_INTEGER - lastYear.valueOf(),\n );\n // console.log('got tagged news', res.data.length);\n\n // ensure user hasn't changed\n if (userToBrowse === (this.props.userToBrowse || this.props.user.uid)) {\n if (!_.isUndefined(res.data.userTermsUnaccepted) && res.data.userTermsUnaccepted) {\n // this.props.newsLoaded([]);\n } else {\n const newNews = _.uniqBy(_.orderBy([...res.data, ...this.props.news], 'UnixTimestamp', 'desc'), 'Id');\n this.props.newsLoaded(newNews);\n }\n }\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onPressAll = () => {\n NavigationService.navigate(values.screenNewsletter, { innerNews: true, options: this.props.options });\n };\n\n renderContent() {\n const { news } = this.props;\n const filteredNews = _.filter(news, n => {\n if (this.props.showArchive) {\n return true;\n }\n return !this.props.archiveList.includes(n.RowId);\n });\n if (_.isEmpty(filteredNews)) {\n if (this.state.loading) {\n return (\n <View style={styles.loadingPadding}>\n <LoadingStateWidget height={168} />\n </View>\n );\n }\n return (\n <View style={styles.loadingPadding}>\n <EmptyStateWidget title={this.getEmptyStateText()} height={168} />\n </View>\n );\n }\n return (\n <ScrollView horizontal contentContainerStyle={{ paddingLeft: 6, paddingRight: 8 }} showsHorizontalScrollIndicator={false}>\n {filteredNews.slice(0, MAX_ITEMS).map(news => (\n <NewsWidgetItem key={news.RowId} news={news} />\n ))}\n </ScrollView>\n );\n }\n\n render() {\n const { colourBrandingMain } = this.props;\n\n return (\n <View style={styles.sectionContainer}>\n <View style={styles.sectionPadding}>\n <View style={styles.sectionHeading}>\n <Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n <InlineButton\n onPress={this.onPressAll}\n color={colourBrandingMain}\n touchableStyle={{ paddingTop: 6 }}\n textStyle={{ color: '#fff' }}\n >\n View All\n </InlineButton>\n </View>\n </View>\n <ArchiveToggle sectionStyle={styles.sectionPadding} />\n {this.renderContent()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n sectionContainer: {\n backgroundColor: '#fff',\n paddingTop: 16,\n },\n sectionPadding: {\n paddingHorizontal: 16,\n paddingBottom: 6,\n },\n loadingPadding: {\n paddingHorizontal: 16,\n },\n sectionHeading: {\n marginBottom: 4,\n flexDirection: 'row',\n alignContent: 'flex-start',\n justifyContent: 'space-between',\n },\n sectionTitle: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n color: TEXT_DARKEST,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, notifications } = state;\n\n return {\n news: state[values.reducerKey].list,\n user,\n site: user.site,\n colourBrandingMain: getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n strings: state.strings?.config || {},\n archiveList: state[values.reducerKey].archive || [],\n showArchive: state[values.reducerKey].showArchive,\n };\n};\n\nexport default connect(mapStateToProps, { newsLoaded, getArchivedPostSetting }, null, { forwardRef: true })(NewsWidget);\n"],"mappings":"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"}
@@ -55,6 +55,10 @@ class NewsletterPost extends Component {
55
55
  update: res.data
56
56
  });
57
57
  this.checkLog(res.data);
58
+ }).catch(err => {
59
+ if (err.response && err.response.status === 404) {
60
+ NavigationService.goBack();
61
+ }
58
62
  });
59
63
  }
60
64
  setTimeout(() => {
@@ -66,6 +70,11 @@ class NewsletterPost extends Component {
66
70
  }
67
71
  }, 2000);
68
72
  }
73
+ componentDidUpdate(prevProps) {
74
+ if (!_.isEqual(prevProps.archiveList, this.props.archiveList)) {
75
+ newsActions.setArchivedPosts(this.props.user.site, this.props.archiveList);
76
+ }
77
+ }
69
78
  onPressBack() {
70
79
  if (this.props.back) {
71
80
  NavigationService.goBack(this.props.back);
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","Platform","Linking","View","Text","ScrollView","TouchableOpacity","ImageBackground","Dimensions","KeyboardAvoidingView","withNavigationFocus","connect","_","moment","Icon","PDFPopup","Header","FontScalePopup","FontScaleButton","BackButton","ProfilePic","UserListPopup","FormattedText","Spinner","Reactions","CommentReply","CommentSection","InlineButton","NavigationService","LINEGREY","TEXT_DARK","TEXT_DARKEST","TEXT_LIGHT","StatusBarHeight","getMainBrandingColourFromState","getSite","hasReacted","getPluralOptions","getValidUrl","HEADER_HEIGHT","allowComments","isVideoUrl","getSiteSettingFromState","newsActions","analyticsActions","softUpdateUser","archivePost","unarchivePost","NewsletterImageSet","values","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","NewsletterPost","constructor","props","_defineProperty","isArchived","state","update","RowId","archiveList","includes","loadingUpdate","fontScaleOpen","taggedOpen","selectedPDF","selectedPDFIndex","isFullScreen","imageSetRef","createRef","scrollView","commentReply","commentSection","componentDidMount","checkLog","Type","getEntry","id","then","res","setState","data","setTimeout","scrollToBottom","_this$scrollView","current","scrollToEnd","animated","onPressBack","back","goBack","onPressAttachment","attachment","Attachments","indexOf","onPressLink","link","openURL","Url","catch","err","console","error","onClosePDF","onChangePDFIndex","index","newIndex","length","onPressFontScale","getAdjustedSize","size","user","fontScale","getTimeText","date","utc","Timestamp","local","isSame","format","uid","refreshUpdate","logged","SourceId","sourceId","log","Site","analyticsKey","changeFontSize","change","showTagged","closeTagged","goToSponsor","Sponsor","Internal","navigate","item","fromNews","Link","renderHeader","createElement","transparent","style","styles","headerContent","onPress","bind","renderTags","isEmpty","Tags","tagString","forEach","tag","color","colourBrandingMain","renderTaggedUsers","Tagged","taggedUsersContainer","map","key","userId","profilePic","Diameter","taggedUsersProfilePic","left","zIndex","bordered","taggedUsersText","Math","min","renderTaggedPopup","users","visible","onClose","title","renderSponsor","HasSponsor","sponsorBanner","backgroundColor","sponsorTouch","borderRadius","marginRight","resizeMode","imageStyle","source","uri","Image","sponsoredText","numberOfLines","sponsoredTitle","Title","renderPDF","Source","selectedIndex","pdfCount","onChangeIndex","renderLinks","Links","attachmentContainer","attachmentLogo","name","type","iconStyle","attachmentLogoText","attachmentLogoIcon","attachmentFill","attachmentTitle","renderAttachments","section","eventDeetTitle","attachmentDeetTitle","renderComments","hidden","optionNewsComments","AllowComments","scaleFont","ref","adminPermission","entityType","featureKey","entityId","entityName","site","live","refreshFrequency","renderCommentReply","renderAuthorTime","timestamp","timeText","fontSize","hideTimestamp","AuthorDisplay","authorTimeContainer","Author","fill","authorText","displayName","renderArchiveButton","archiveContainer","onToggleArchive","border","textStyle","render","page","container","behavior","OS","fontScalePopup","onPressSmall","onPressLarge","keyboardShouldPersistTaps","minHeight","topContainer","lineHeight","news","orientationChanged","bottomContainer","text","marginTop","entity","anyHighlighted","onUpdateReactions","flex","position","borderColor","borderTopWidth","paddingTop","fontFamily","flexDirection","justifyContent","textAlign","paddingHorizontal","paddingVertical","alignItems","marginLeft","flexGrow","padding","paddingLeft","top","right","marginBottom","mapStateToProps","optionHideTimestamp","reducerKey","archive"],"sources":["NewsletterPost.js"],"sourcesContent":["import React, { Component } from 'react';\nimport {\n Platform,\n Linking,\n View,\n Text,\n ScrollView,\n TouchableOpacity,\n ImageBackground,\n Dimensions,\n KeyboardAvoidingView,\n} from 'react-native';\nimport { withNavigationFocus } from 'react-navigation';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { Icon } from 'react-native-elements';\nimport {\n PDFPopup,\n Header,\n FontScalePopup,\n FontScaleButton,\n BackButton,\n ProfilePic,\n UserListPopup,\n FormattedText,\n Spinner,\n Reactions,\n CommentReply,\n CommentSection,\n InlineButton,\n} from '../common';\nimport NavigationService from '../../js/NavigationService';\nimport {\n LINEGREY,\n TEXT_DARK,\n TEXT_DARKEST,\n TEXT_LIGHT,\n StatusBarHeight,\n getMainBrandingColourFromState,\n getSite,\n hasReacted,\n getPluralOptions,\n getValidUrl,\n HEADER_HEIGHT,\n allowComments,\n isVideoUrl,\n getSiteSettingFromState,\n} from '../../js';\nimport { newsActions, analyticsActions } from '../../webapi';\nimport { softUpdateUser, archivePost, unarchivePost } from '../../actions';\nimport NewsletterImageSet from './NewsletterImageSet';\nimport { values } from '../../values.config';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\n\nclass NewsletterPost extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n update: this.props.update || {},\n loadingUpdate: !this.props.update,\n fontScaleOpen: false,\n taggedOpen: false,\n selectedPDF: null,\n selectedPDFIndex: null,\n isFullScreen: false,\n };\n this.imageSetRef = React.createRef();\n this.scrollView = React.createRef();\n this.commentReply = React.createRef();\n this.commentSection = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.update) {\n this.checkLog(this.props.update);\n }\n if (!this.props.update || this.props.update.Type !== 'WelcomePage') {\n newsActions.getEntry(this.props.update ? this.props.update.RowId : this.props.id).then(res => {\n this.setState({\n loadingUpdate: false,\n update: res.data,\n });\n this.checkLog(res.data);\n });\n }\n\n setTimeout(() => {\n if (this.props.scrollToBottom) {\n this.scrollView?.current?.scrollToEnd({ animated: true });\n }\n }, 2000);\n }\n\n onPressBack() {\n if (this.props.back) {\n NavigationService.goBack(this.props.back);\n } else {\n NavigationService.goBack();\n }\n }\n\n onPressAttachment(attachment) {\n this.setState({\n selectedPDF: attachment,\n selectedPDFIndex: this.state.update.Attachments.indexOf(attachment),\n });\n }\n\n onPressLink(link) {\n Linking.openURL(getValidUrl(link.Url)).catch(err => console.error('An error occurred', err));\n }\n\n onClosePDF() {\n this.setState({\n selectedPDF: null,\n selectedPDFIndex: null,\n });\n }\n\n onChangePDFIndex(index) {\n const newIndex = (this.state.selectedPDFIndex + index) % this.state.update.Attachments.length;\n this.setState({\n selectedPDF: this.state.update.Attachments[newIndex],\n selectedPDFIndex: newIndex,\n });\n }\n\n onPressFontScale() {\n this.setState({\n fontScaleOpen: !this.state.fontScaleOpen,\n });\n }\n\n getAdjustedSize(size) {\n return size + this.props.user.fontScale;\n }\n\n getTimeText() {\n const date = moment.utc(this.state.update.Timestamp).local();\n if (date.isSame(moment(), 'date')) {\n return 'Today';\n }\n return date.format('D MMM');\n }\n\n hasReacted() {\n if (!this.state.update || !this.state.update.Reactions) {\n return false;\n }\n return hasReacted(this.state.update.Reactions, this.props.user.uid);\n }\n\n refreshUpdate() {\n this.setState({\n update: this.state.update,\n });\n }\n\n checkLog(update) {\n if (!this.state.logged && update.Type !== 'WelcomePage') {\n this.setState({\n logged: true,\n });\n const data = {};\n if (update.SourceId) {\n data.sourceId = update.SourceId;\n }\n analyticsActions.log(update.Site, 'PageView', values.analyticsKey, update.RowId, data);\n }\n }\n\n changeFontSize(change) {\n this.props.softUpdateUser({ fontScale: this.props.user.fontScale + change });\n }\n\n showTagged() {\n this.setState({\n taggedOpen: true,\n });\n }\n\n closeTagged() {\n this.setState({\n taggedOpen: false,\n });\n }\n\n onToggleArchive = () => {\n if (this.isArchived()) {\n this.props.unarchivePost(this.state.update.RowId);\n } else {\n this.props.archivePost(this.state.update.RowId);\n }\n };\n\n isArchived = () => {\n return this.props.archiveList.includes(this.state.update.RowId);\n };\n\n goToSponsor() {\n if (this.state.update.Sponsor.Internal) {\n NavigationService.navigate('service', { item: { ...this.state.update.Sponsor, fromNews: true } });\n } else {\n Linking.openURL(getValidUrl(this.state.update.Sponsor.Link)).catch(err => console.error('An error occurred', err));\n }\n }\n\n renderHeader() {\n return (\n <Header transparent>\n <View style={styles.headerContent}>\n <BackButton onPress={this.onPressBack.bind(this)} />\n <FontScaleButton onPress={this.onPressFontScale.bind(this)} />\n </View>\n </Header>\n );\n }\n\n renderTags() {\n if (_.isEmpty(this.state.update.Tags)) {\n return null;\n }\n let tagString = '';\n\n _.forEach(this.state.update.Tags, tag => {\n tagString += `${tag} `;\n });\n return <Text style={{ color: this.props.colourBrandingMain }}>{tagString}</Text>;\n }\n\n renderTaggedUsers() {\n if (_.isEmpty(this.state.update.Tagged)) {\n return null;\n }\n return (\n <TouchableOpacity onPress={this.showTagged.bind(this)}>\n <View style={styles.taggedUsersContainer}>\n {this.state.update.Tagged.map((user, index) => {\n if (index < 3) {\n return (\n <ProfilePic\n key={user.userId}\n ProfilePic={user.profilePic}\n Diameter={24}\n style={[styles.taggedUsersProfilePic, { left: index * -12, zIndex: index + 10 }]}\n bordered\n />\n );\n }\n })}\n <Text style={[styles.taggedUsersText, { left: Math.min(this.state.update.Tagged.length - 1, 2) * -12 }]}>\n {`${this.state.update.Tagged.length} tagged ${getPluralOptions(this.state.update.Tagged.length, 'person', 'people')}`}\n </Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderTaggedPopup() {\n if (_.isEmpty(this.state.update.Tagged)) {\n return null;\n }\n return (\n <UserListPopup\n users={this.state.update.Tagged}\n visible={this.state.taggedOpen}\n onClose={this.closeTagged.bind(this)}\n title=\"Tagged people\"\n />\n );\n }\n\n renderSponsor() {\n if (this.state.update.HasSponsor) {\n return (\n <View style={[styles.sponsorBanner, { backgroundColor: this.props.colourBrandingMain }]}>\n <TouchableOpacity style={styles.sponsorTouch} onPress={this.goToSponsor.bind(this)}>\n <ImageBackground\n style={{ height: 36, width: 36, backgroundColor: '#fff', borderRadius: 18, marginRight: 8 }}\n resizeMode=\"cover\"\n imageStyle={{ borderRadius: 18 }}\n source={{ uri: this.state.update.Sponsor.Image }}\n />\n <Text style={styles.sponsoredText} numberOfLines={2}>\n Sponsored by <Text style={styles.sponsoredTitle}>{this.state.update.Sponsor.Title}</Text>\n </Text>\n </TouchableOpacity>\n </View>\n );\n }\n return null;\n }\n\n renderPDF() {\n return (\n <PDFPopup\n source={!_.isEmpty(this.state.selectedPDF) && this.state.selectedPDF.Source}\n visible={!_.isEmpty(this.state.selectedPDF)}\n selectedIndex={this.state.selectedPDFIndex}\n pdfCount={this.state.update.Attachments ? this.state.update.Attachments.length : 0}\n onClose={this.onClosePDF.bind(this)}\n onChangeIndex={this.onChangePDFIndex.bind(this)}\n title={!_.isEmpty(this.state.selectedPDF) && this.state.selectedPDF.Title}\n />\n );\n }\n\n renderLinks() {\n if (_.isEmpty(this.state.update.Links)) {\n return null;\n }\n return this.state.update.Links.map((link, index) => {\n return (\n <TouchableOpacity\n onPress={() => {\n this.onPressLink(link);\n }}\n key={index}\n style={styles.attachmentContainer}\n >\n <View\n style={[\n styles.attachmentLogo,\n {\n backgroundColor: this.props.colourBrandingMain,\n },\n ]}\n >\n {isVideoUrl(link.Url) ? (\n <Icon name=\"video-camera\" type=\"font-awesome\" iconStyle={[styles.attachmentLogoText, styles.attachmentLogoIcon]} />\n ) : (\n <Text style={styles.attachmentLogoText}>Web</Text>\n )}\n </View>\n <View style={styles.attachmentFill}>\n <Text style={styles.attachmentTitle}>{link.Text}</Text>\n </View>\n </TouchableOpacity>\n );\n });\n }\n\n renderAttachments() {\n if (_.isEmpty(this.state.update.Attachments)) {\n return null;\n }\n return (\n <View style={styles.section}>\n <Text style={[styles.eventDeetTitle, styles.attachmentDeetTitle]}>Attachments</Text>\n {this.state.update.Attachments.map((attachment, index) => {\n return (\n <TouchableOpacity onPress={this.onPressAttachment.bind(this, attachment)} key={index} style={styles.attachmentContainer}>\n <View\n style={[\n styles.attachmentLogo,\n {\n backgroundColor: this.props.colourBrandingMain,\n },\n ]}\n >\n <Text style={styles.attachmentLogoText}>PDF</Text>\n </View>\n <View style={styles.attachmentFill}>\n <Text style={styles.attachmentTitle}>{attachment.Title}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </View>\n );\n }\n\n renderComments() {\n if (_.includes(this.props.user.hidden, values.optionNewsComments)) return null;\n if (!allowComments(this.state.update.AllowComments)) return null;\n\n return (\n <CommentSection\n scaleFont\n ref={this.commentSection}\n commentReply={this.commentReply}\n adminPermission=\"newsletter\"\n entityType={values.featureKey}\n entityId={this.state.update.RowId}\n entityName={this.state.update.Title}\n site={this.state.update.Site}\n live\n refreshFrequency={10000}\n />\n );\n }\n\n renderCommentReply() {\n if (!allowComments(this.state.update.AllowComments)) {\n return null;\n }\n return (\n <CommentReply\n ref={this.commentReply}\n commentSection={this.commentSection}\n scrollView={this.scrollView}\n entityType={values.featureKey}\n entityId={this.state.update.RowId}\n entityName={this.state.update.Title}\n site={this.state.update.Site}\n />\n );\n }\n\n renderAuthorTime() {\n let timestamp = (\n <Text style={[styles.timeText, { fontSize: this.getAdjustedSize(14) }]}>\n {this.getTimeText()}\n {!_.isEmpty(this.state.update.Tags) && ` ⋅ `}\n {this.renderTags()}\n </Text>\n );\n if (this.props.hideTimestamp) {\n timestamp = null;\n }\n if (!this.state.update.AuthorDisplay) {\n if (this.props.hideTimestamp) {\n return null;\n }\n return <View style={styles.authorTimeContainer}>{timestamp}</View>;\n }\n return (\n <View style={styles.authorTimeContainer}>\n {this.state.update.AuthorDisplay === 'name' && (\n <ProfilePic ProfilePic={this.state.update.Author.profilePic} style={styles.profilePic} size={36} />\n )}\n <View style={styles.fill}>\n <Text numberOfLines={1} style={styles.authorText}>\n {`By ${this.state.update.Author.displayName}`}\n </Text>\n {timestamp}\n </View>\n </View>\n );\n }\n\n renderArchiveButton() {\n if (!this.state.update || !this.state.update.RowId) {\n return null;\n }\n return (\n <View style={styles.archiveContainer}>\n <InlineButton\n onPress={this.onToggleArchive}\n border={this.props.colourBrandingMain}\n textStyle={{ color: this.props.colourBrandingMain }}\n >\n {this.isArchived() ? 'Unarchive' : 'Archive'} Post\n </InlineButton>\n </View>\n );\n }\n\n render() {\n const { isFullScreen } = this.state;\n\n if (this.state.loadingUpdate) {\n return (\n <View style={styles.page}>\n <Header transparent>\n <View style={styles.headerContent}>\n <BackButton onPress={this.onPressBack.bind(this)} />\n </View>\n </Header>\n <ScrollView style={styles.container}>\n <Spinner color={this.props.colourBrandingMain} />\n </ScrollView>\n </View>\n );\n }\n\n return (\n <KeyboardAvoidingView behavior={Platform.OS === 'ios' && 'padding'} style={styles.page}>\n {!isFullScreen && this.renderHeader()}\n <FontScalePopup\n style={styles.fontScalePopup}\n onPressSmall={this.changeFontSize.bind(this, -2)}\n onPressLarge={this.changeFontSize.bind(this, 2)}\n visible={this.state.fontScaleOpen}\n />\n {this.renderTaggedPopup()}\n <ScrollView keyboardShouldPersistTaps=\"handled\" style={styles.container} ref={this.scrollView}>\n <View style={{ minHeight: SCREEN_HEIGHT - StatusBarHeight(HEADER_HEIGHT) - 56 }}>\n {!isFullScreen && (\n <View style={styles.topContainer}>\n <Text style={[styles.title, { fontSize: this.getAdjustedSize(24), lineHeight: this.getAdjustedSize(32) }]}>\n {this.state.update.Title}\n </Text>\n {this.renderAuthorTime()}\n </View>\n )}\n <NewsletterImageSet\n ref={this.imageSetRef}\n news={this.state.update}\n width={SCREEN_WIDTH}\n orientationChanged={isFullScreen => this.setState({ isFullScreen })}\n />\n {!isFullScreen && (\n <View>\n {this.renderSponsor()}\n {this.renderTaggedUsers()}\n <View style={styles.bottomContainer}>\n <FormattedText style={[styles.text, { fontSize: this.getAdjustedSize(14), lineHeight: this.getAdjustedSize(24) }]}>\n {this.state.update.Text}\n </FormattedText>\n {this.renderLinks()}\n {this.renderAttachments()}\n {this.state.update.Type !== 'WelcomePage' && (\n <Reactions\n style={{ marginTop: 16 }}\n entity={this.state.update}\n entityType={values.featureKey}\n entityId={this.state.update ? this.state.update.RowId : `${getSite(this.props.user.site)}_${this.props.id}`}\n anyHighlighted={this.hasReacted()}\n user={this.props.user}\n site={this.state.update ? this.state.update.Site : getSite(this.props.user.site)}\n onUpdateReactions={this.refreshUpdate.bind(this)}\n />\n )}\n {this.renderArchiveButton()}\n </View>\n {this.renderComments()}\n </View>\n )}\n </View>\n <View>\n {this.renderCommentReply()}\n {this.renderPDF()}\n </View>\n </ScrollView>\n </KeyboardAvoidingView>\n );\n }\n}\n\nconst styles = {\n page: {\n flex: 1,\n position: 'relative',\n backgroundColor: '#fff',\n },\n section: {\n borderColor: LINEGREY,\n borderTopWidth: 1,\n marginTop: 16,\n paddingTop: 16,\n },\n eventDeetTitle: {\n fontFamily: 'sf-bold',\n color: TEXT_DARK,\n fontSize: 14,\n },\n\n attachmentContainer: {\n flexDirection: 'row',\n marginTop: 8,\n },\n attachmentLogo: {\n height: 48,\n width: 40,\n borderRadius: 4,\n justifyContent: 'center',\n marginRight: 20,\n },\n attachmentLogoText: {\n textAlign: 'center',\n color: '#fff',\n fontFamily: 'sf-bold',\n fontSize: 10,\n },\n attachmentLogoIcon: {\n fontSize: 18,\n },\n attachmentFill: {\n flex: 1,\n justifyContent: 'center',\n },\n attachmentTitle: {\n fontSize: 16,\n lineHeight: 22,\n fontFamily: 'sf-regular',\n color: TEXT_DARK,\n },\n sponsorBanner: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n width: '100%',\n flexDirection: 'row',\n },\n sponsorTouch: {\n flex: 1,\n height: 40,\n flexDirection: 'row',\n alignItems: 'center',\n },\n sponsoredText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: '#fff',\n backgroundColor: 'transparent',\n flex: 1,\n },\n sponsoredTitle: {\n fontFamily: 'sf-medium',\n marginLeft: 4,\n },\n container: {\n flexGrow: 1,\n },\n topContainer: {\n padding: 16,\n },\n bottomContainer: {\n padding: 16,\n },\n title: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n lineHeight: 32,\n color: TEXT_DARK,\n backgroundColor: 'transparent',\n },\n timeText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_LIGHT,\n backgroundColor: 'transparent',\n },\n text: {\n fontSize: 16,\n lineHeight: 22,\n fontFamily: 'sf-regular',\n color: TEXT_DARK,\n backgroundColor: 'transparent',\n },\n headerContent: {\n height: 70,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: 15,\n flex: 1,\n },\n fontScalePopup: {\n position: 'absolute',\n top: StatusBarHeight(55),\n right: 5,\n zIndex: 100,\n },\n taggedUsersContainer: {\n marginTop: 8,\n flexDirection: 'row',\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n taggedUsersText: {\n fontFamily: 'sf-bold',\n color: TEXT_DARK,\n fontSize: 10,\n marginLeft: 8,\n },\n authorTimeContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: 16,\n },\n profilePic: {\n marginRight: 8,\n },\n authorText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_DARKEST,\n backgroundColor: 'transparent',\n marginBottom: 4,\n },\n archiveContainer: {\n alignItems: 'center',\n marginTop: 16,\n },\n};\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n user: state.user,\n hideTimestamp: getSiteSettingFromState(state, values.optionHideTimestamp, false),\n archiveList: state[values.reducerKey].archive || [],\n };\n};\n\nexport default withNavigationFocus(connect(mapStateToProps, { softUpdateUser, archivePost, unarchivePost })(NewsletterPost));\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Component","Platform","Linking","View","Text","ScrollView","TouchableOpacity","ImageBackground","Dimensions","KeyboardAvoidingView","withNavigationFocus","connect","_","moment","Icon","PDFPopup","Header","FontScalePopup","FontScaleButton","BackButton","ProfilePic","UserListPopup","FormattedText","Spinner","Reactions","CommentReply","CommentSection","InlineButton","NavigationService","LINEGREY","TEXT_DARK","TEXT_DARKEST","TEXT_LIGHT","StatusBarHeight","getMainBrandingColourFromState","getSite","hasReacted","getPluralOptions","getValidUrl","HEADER_HEIGHT","allowComments","isVideoUrl","getSiteSettingFromState","newsActions","analyticsActions","softUpdateUser","archivePost","unarchivePost","NewsletterImageSet","values","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","NewsletterPost","constructor","props","_defineProperty","isArchived","state","update","RowId","archiveList","includes","loadingUpdate","fontScaleOpen","taggedOpen","selectedPDF","selectedPDFIndex","isFullScreen","imageSetRef","createRef","scrollView","commentReply","commentSection","componentDidMount","checkLog","Type","getEntry","id","then","res","setState","data","catch","err","response","status","goBack","setTimeout","scrollToBottom","_this$scrollView","current","scrollToEnd","animated","componentDidUpdate","prevProps","isEqual","setArchivedPosts","user","site","onPressBack","back","onPressAttachment","attachment","Attachments","indexOf","onPressLink","link","openURL","Url","console","error","onClosePDF","onChangePDFIndex","index","newIndex","length","onPressFontScale","getAdjustedSize","size","fontScale","getTimeText","date","utc","Timestamp","local","isSame","format","uid","refreshUpdate","logged","SourceId","sourceId","log","Site","analyticsKey","changeFontSize","change","showTagged","closeTagged","goToSponsor","Sponsor","Internal","navigate","item","fromNews","Link","renderHeader","createElement","transparent","style","styles","headerContent","onPress","bind","renderTags","isEmpty","Tags","tagString","forEach","tag","color","colourBrandingMain","renderTaggedUsers","Tagged","taggedUsersContainer","map","key","userId","profilePic","Diameter","taggedUsersProfilePic","left","zIndex","bordered","taggedUsersText","Math","min","renderTaggedPopup","users","visible","onClose","title","renderSponsor","HasSponsor","sponsorBanner","backgroundColor","sponsorTouch","borderRadius","marginRight","resizeMode","imageStyle","source","uri","Image","sponsoredText","numberOfLines","sponsoredTitle","Title","renderPDF","Source","selectedIndex","pdfCount","onChangeIndex","renderLinks","Links","attachmentContainer","attachmentLogo","name","type","iconStyle","attachmentLogoText","attachmentLogoIcon","attachmentFill","attachmentTitle","renderAttachments","section","eventDeetTitle","attachmentDeetTitle","renderComments","hidden","optionNewsComments","AllowComments","scaleFont","ref","adminPermission","entityType","featureKey","entityId","entityName","live","refreshFrequency","renderCommentReply","renderAuthorTime","timestamp","timeText","fontSize","hideTimestamp","AuthorDisplay","authorTimeContainer","Author","fill","authorText","displayName","renderArchiveButton","archiveContainer","onToggleArchive","border","textStyle","render","page","container","behavior","OS","fontScalePopup","onPressSmall","onPressLarge","keyboardShouldPersistTaps","minHeight","topContainer","lineHeight","news","orientationChanged","bottomContainer","text","marginTop","entity","anyHighlighted","onUpdateReactions","flex","position","borderColor","borderTopWidth","paddingTop","fontFamily","flexDirection","justifyContent","textAlign","paddingHorizontal","paddingVertical","alignItems","marginLeft","flexGrow","padding","paddingLeft","top","right","marginBottom","mapStateToProps","optionHideTimestamp","reducerKey","archive"],"sources":["NewsletterPost.js"],"sourcesContent":["import React, { Component } from 'react';\nimport {\n Platform,\n Linking,\n View,\n Text,\n ScrollView,\n TouchableOpacity,\n ImageBackground,\n Dimensions,\n KeyboardAvoidingView,\n} from 'react-native';\nimport { withNavigationFocus } from 'react-navigation';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { Icon } from 'react-native-elements';\nimport {\n PDFPopup,\n Header,\n FontScalePopup,\n FontScaleButton,\n BackButton,\n ProfilePic,\n UserListPopup,\n FormattedText,\n Spinner,\n Reactions,\n CommentReply,\n CommentSection,\n InlineButton,\n} from '../common';\nimport NavigationService from '../../js/NavigationService';\nimport {\n LINEGREY,\n TEXT_DARK,\n TEXT_DARKEST,\n TEXT_LIGHT,\n StatusBarHeight,\n getMainBrandingColourFromState,\n getSite,\n hasReacted,\n getPluralOptions,\n getValidUrl,\n HEADER_HEIGHT,\n allowComments,\n isVideoUrl,\n getSiteSettingFromState,\n} from '../../js';\nimport { newsActions, analyticsActions } from '../../webapi';\nimport { softUpdateUser, archivePost, unarchivePost } from '../../actions';\nimport NewsletterImageSet from './NewsletterImageSet';\nimport { values } from '../../values.config';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\n\nclass NewsletterPost extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n update: this.props.update || {},\n loadingUpdate: !this.props.update,\n fontScaleOpen: false,\n taggedOpen: false,\n selectedPDF: null,\n selectedPDFIndex: null,\n isFullScreen: false,\n };\n this.imageSetRef = React.createRef();\n this.scrollView = React.createRef();\n this.commentReply = React.createRef();\n this.commentSection = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.update) {\n this.checkLog(this.props.update);\n }\n if (!this.props.update || this.props.update.Type !== 'WelcomePage') {\n newsActions\n .getEntry(this.props.update ? this.props.update.RowId : this.props.id)\n .then(res => {\n this.setState({\n loadingUpdate: false,\n update: res.data,\n });\n this.checkLog(res.data);\n })\n .catch(err => {\n if (err.response && err.response.status === 404) {\n NavigationService.goBack();\n }\n });\n }\n\n setTimeout(() => {\n if (this.props.scrollToBottom) {\n this.scrollView?.current?.scrollToEnd({ animated: true });\n }\n }, 2000);\n }\n\n componentDidUpdate(prevProps) {\n if (!_.isEqual(prevProps.archiveList, this.props.archiveList)) {\n newsActions.setArchivedPosts(this.props.user.site, this.props.archiveList);\n }\n }\n\n onPressBack() {\n if (this.props.back) {\n NavigationService.goBack(this.props.back);\n } else {\n NavigationService.goBack();\n }\n }\n\n onPressAttachment(attachment) {\n this.setState({\n selectedPDF: attachment,\n selectedPDFIndex: this.state.update.Attachments.indexOf(attachment),\n });\n }\n\n onPressLink(link) {\n Linking.openURL(getValidUrl(link.Url)).catch(err => console.error('An error occurred', err));\n }\n\n onClosePDF() {\n this.setState({\n selectedPDF: null,\n selectedPDFIndex: null,\n });\n }\n\n onChangePDFIndex(index) {\n const newIndex = (this.state.selectedPDFIndex + index) % this.state.update.Attachments.length;\n this.setState({\n selectedPDF: this.state.update.Attachments[newIndex],\n selectedPDFIndex: newIndex,\n });\n }\n\n onPressFontScale() {\n this.setState({\n fontScaleOpen: !this.state.fontScaleOpen,\n });\n }\n\n getAdjustedSize(size) {\n return size + this.props.user.fontScale;\n }\n\n getTimeText() {\n const date = moment.utc(this.state.update.Timestamp).local();\n if (date.isSame(moment(), 'date')) {\n return 'Today';\n }\n return date.format('D MMM');\n }\n\n hasReacted() {\n if (!this.state.update || !this.state.update.Reactions) {\n return false;\n }\n return hasReacted(this.state.update.Reactions, this.props.user.uid);\n }\n\n refreshUpdate() {\n this.setState({\n update: this.state.update,\n });\n }\n\n checkLog(update) {\n if (!this.state.logged && update.Type !== 'WelcomePage') {\n this.setState({\n logged: true,\n });\n const data = {};\n if (update.SourceId) {\n data.sourceId = update.SourceId;\n }\n analyticsActions.log(update.Site, 'PageView', values.analyticsKey, update.RowId, data);\n }\n }\n\n changeFontSize(change) {\n this.props.softUpdateUser({ fontScale: this.props.user.fontScale + change });\n }\n\n showTagged() {\n this.setState({\n taggedOpen: true,\n });\n }\n\n closeTagged() {\n this.setState({\n taggedOpen: false,\n });\n }\n\n onToggleArchive = () => {\n if (this.isArchived()) {\n this.props.unarchivePost(this.state.update.RowId);\n } else {\n this.props.archivePost(this.state.update.RowId);\n }\n };\n\n isArchived = () => {\n return this.props.archiveList.includes(this.state.update.RowId);\n };\n\n goToSponsor() {\n if (this.state.update.Sponsor.Internal) {\n NavigationService.navigate('service', { item: { ...this.state.update.Sponsor, fromNews: true } });\n } else {\n Linking.openURL(getValidUrl(this.state.update.Sponsor.Link)).catch(err => console.error('An error occurred', err));\n }\n }\n\n renderHeader() {\n return (\n <Header transparent>\n <View style={styles.headerContent}>\n <BackButton onPress={this.onPressBack.bind(this)} />\n <FontScaleButton onPress={this.onPressFontScale.bind(this)} />\n </View>\n </Header>\n );\n }\n\n renderTags() {\n if (_.isEmpty(this.state.update.Tags)) {\n return null;\n }\n let tagString = '';\n\n _.forEach(this.state.update.Tags, tag => {\n tagString += `${tag} `;\n });\n return <Text style={{ color: this.props.colourBrandingMain }}>{tagString}</Text>;\n }\n\n renderTaggedUsers() {\n if (_.isEmpty(this.state.update.Tagged)) {\n return null;\n }\n return (\n <TouchableOpacity onPress={this.showTagged.bind(this)}>\n <View style={styles.taggedUsersContainer}>\n {this.state.update.Tagged.map((user, index) => {\n if (index < 3) {\n return (\n <ProfilePic\n key={user.userId}\n ProfilePic={user.profilePic}\n Diameter={24}\n style={[styles.taggedUsersProfilePic, { left: index * -12, zIndex: index + 10 }]}\n bordered\n />\n );\n }\n })}\n <Text style={[styles.taggedUsersText, { left: Math.min(this.state.update.Tagged.length - 1, 2) * -12 }]}>\n {`${this.state.update.Tagged.length} tagged ${getPluralOptions(this.state.update.Tagged.length, 'person', 'people')}`}\n </Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderTaggedPopup() {\n if (_.isEmpty(this.state.update.Tagged)) {\n return null;\n }\n return (\n <UserListPopup\n users={this.state.update.Tagged}\n visible={this.state.taggedOpen}\n onClose={this.closeTagged.bind(this)}\n title=\"Tagged people\"\n />\n );\n }\n\n renderSponsor() {\n if (this.state.update.HasSponsor) {\n return (\n <View style={[styles.sponsorBanner, { backgroundColor: this.props.colourBrandingMain }]}>\n <TouchableOpacity style={styles.sponsorTouch} onPress={this.goToSponsor.bind(this)}>\n <ImageBackground\n style={{ height: 36, width: 36, backgroundColor: '#fff', borderRadius: 18, marginRight: 8 }}\n resizeMode=\"cover\"\n imageStyle={{ borderRadius: 18 }}\n source={{ uri: this.state.update.Sponsor.Image }}\n />\n <Text style={styles.sponsoredText} numberOfLines={2}>\n Sponsored by <Text style={styles.sponsoredTitle}>{this.state.update.Sponsor.Title}</Text>\n </Text>\n </TouchableOpacity>\n </View>\n );\n }\n return null;\n }\n\n renderPDF() {\n return (\n <PDFPopup\n source={!_.isEmpty(this.state.selectedPDF) && this.state.selectedPDF.Source}\n visible={!_.isEmpty(this.state.selectedPDF)}\n selectedIndex={this.state.selectedPDFIndex}\n pdfCount={this.state.update.Attachments ? this.state.update.Attachments.length : 0}\n onClose={this.onClosePDF.bind(this)}\n onChangeIndex={this.onChangePDFIndex.bind(this)}\n title={!_.isEmpty(this.state.selectedPDF) && this.state.selectedPDF.Title}\n />\n );\n }\n\n renderLinks() {\n if (_.isEmpty(this.state.update.Links)) {\n return null;\n }\n return this.state.update.Links.map((link, index) => {\n return (\n <TouchableOpacity\n onPress={() => {\n this.onPressLink(link);\n }}\n key={index}\n style={styles.attachmentContainer}\n >\n <View\n style={[\n styles.attachmentLogo,\n {\n backgroundColor: this.props.colourBrandingMain,\n },\n ]}\n >\n {isVideoUrl(link.Url) ? (\n <Icon name=\"video-camera\" type=\"font-awesome\" iconStyle={[styles.attachmentLogoText, styles.attachmentLogoIcon]} />\n ) : (\n <Text style={styles.attachmentLogoText}>Web</Text>\n )}\n </View>\n <View style={styles.attachmentFill}>\n <Text style={styles.attachmentTitle}>{link.Text}</Text>\n </View>\n </TouchableOpacity>\n );\n });\n }\n\n renderAttachments() {\n if (_.isEmpty(this.state.update.Attachments)) {\n return null;\n }\n return (\n <View style={styles.section}>\n <Text style={[styles.eventDeetTitle, styles.attachmentDeetTitle]}>Attachments</Text>\n {this.state.update.Attachments.map((attachment, index) => {\n return (\n <TouchableOpacity onPress={this.onPressAttachment.bind(this, attachment)} key={index} style={styles.attachmentContainer}>\n <View\n style={[\n styles.attachmentLogo,\n {\n backgroundColor: this.props.colourBrandingMain,\n },\n ]}\n >\n <Text style={styles.attachmentLogoText}>PDF</Text>\n </View>\n <View style={styles.attachmentFill}>\n <Text style={styles.attachmentTitle}>{attachment.Title}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </View>\n );\n }\n\n renderComments() {\n if (_.includes(this.props.user.hidden, values.optionNewsComments)) return null;\n if (!allowComments(this.state.update.AllowComments)) return null;\n\n return (\n <CommentSection\n scaleFont\n ref={this.commentSection}\n commentReply={this.commentReply}\n adminPermission=\"newsletter\"\n entityType={values.featureKey}\n entityId={this.state.update.RowId}\n entityName={this.state.update.Title}\n site={this.state.update.Site}\n live\n refreshFrequency={10000}\n />\n );\n }\n\n renderCommentReply() {\n if (!allowComments(this.state.update.AllowComments)) {\n return null;\n }\n return (\n <CommentReply\n ref={this.commentReply}\n commentSection={this.commentSection}\n scrollView={this.scrollView}\n entityType={values.featureKey}\n entityId={this.state.update.RowId}\n entityName={this.state.update.Title}\n site={this.state.update.Site}\n />\n );\n }\n\n renderAuthorTime() {\n let timestamp = (\n <Text style={[styles.timeText, { fontSize: this.getAdjustedSize(14) }]}>\n {this.getTimeText()}\n {!_.isEmpty(this.state.update.Tags) && ` ⋅ `}\n {this.renderTags()}\n </Text>\n );\n if (this.props.hideTimestamp) {\n timestamp = null;\n }\n if (!this.state.update.AuthorDisplay) {\n if (this.props.hideTimestamp) {\n return null;\n }\n return <View style={styles.authorTimeContainer}>{timestamp}</View>;\n }\n return (\n <View style={styles.authorTimeContainer}>\n {this.state.update.AuthorDisplay === 'name' && (\n <ProfilePic ProfilePic={this.state.update.Author.profilePic} style={styles.profilePic} size={36} />\n )}\n <View style={styles.fill}>\n <Text numberOfLines={1} style={styles.authorText}>\n {`By ${this.state.update.Author.displayName}`}\n </Text>\n {timestamp}\n </View>\n </View>\n );\n }\n\n renderArchiveButton() {\n if (!this.state.update || !this.state.update.RowId) {\n return null;\n }\n return (\n <View style={styles.archiveContainer}>\n <InlineButton\n onPress={this.onToggleArchive}\n border={this.props.colourBrandingMain}\n textStyle={{ color: this.props.colourBrandingMain }}\n >\n {this.isArchived() ? 'Unarchive' : 'Archive'} Post\n </InlineButton>\n </View>\n );\n }\n\n render() {\n const { isFullScreen } = this.state;\n\n if (this.state.loadingUpdate) {\n return (\n <View style={styles.page}>\n <Header transparent>\n <View style={styles.headerContent}>\n <BackButton onPress={this.onPressBack.bind(this)} />\n </View>\n </Header>\n <ScrollView style={styles.container}>\n <Spinner color={this.props.colourBrandingMain} />\n </ScrollView>\n </View>\n );\n }\n\n return (\n <KeyboardAvoidingView behavior={Platform.OS === 'ios' && 'padding'} style={styles.page}>\n {!isFullScreen && this.renderHeader()}\n <FontScalePopup\n style={styles.fontScalePopup}\n onPressSmall={this.changeFontSize.bind(this, -2)}\n onPressLarge={this.changeFontSize.bind(this, 2)}\n visible={this.state.fontScaleOpen}\n />\n {this.renderTaggedPopup()}\n <ScrollView keyboardShouldPersistTaps=\"handled\" style={styles.container} ref={this.scrollView}>\n <View style={{ minHeight: SCREEN_HEIGHT - StatusBarHeight(HEADER_HEIGHT) - 56 }}>\n {!isFullScreen && (\n <View style={styles.topContainer}>\n <Text style={[styles.title, { fontSize: this.getAdjustedSize(24), lineHeight: this.getAdjustedSize(32) }]}>\n {this.state.update.Title}\n </Text>\n {this.renderAuthorTime()}\n </View>\n )}\n <NewsletterImageSet\n ref={this.imageSetRef}\n news={this.state.update}\n width={SCREEN_WIDTH}\n orientationChanged={isFullScreen => this.setState({ isFullScreen })}\n />\n {!isFullScreen && (\n <View>\n {this.renderSponsor()}\n {this.renderTaggedUsers()}\n <View style={styles.bottomContainer}>\n <FormattedText style={[styles.text, { fontSize: this.getAdjustedSize(14), lineHeight: this.getAdjustedSize(24) }]}>\n {this.state.update.Text}\n </FormattedText>\n {this.renderLinks()}\n {this.renderAttachments()}\n {this.state.update.Type !== 'WelcomePage' && (\n <Reactions\n style={{ marginTop: 16 }}\n entity={this.state.update}\n entityType={values.featureKey}\n entityId={this.state.update ? this.state.update.RowId : `${getSite(this.props.user.site)}_${this.props.id}`}\n anyHighlighted={this.hasReacted()}\n user={this.props.user}\n site={this.state.update ? this.state.update.Site : getSite(this.props.user.site)}\n onUpdateReactions={this.refreshUpdate.bind(this)}\n />\n )}\n {this.renderArchiveButton()}\n </View>\n {this.renderComments()}\n </View>\n )}\n </View>\n <View>\n {this.renderCommentReply()}\n {this.renderPDF()}\n </View>\n </ScrollView>\n </KeyboardAvoidingView>\n );\n }\n}\n\nconst styles = {\n page: {\n flex: 1,\n position: 'relative',\n backgroundColor: '#fff',\n },\n section: {\n borderColor: LINEGREY,\n borderTopWidth: 1,\n marginTop: 16,\n paddingTop: 16,\n },\n eventDeetTitle: {\n fontFamily: 'sf-bold',\n color: TEXT_DARK,\n fontSize: 14,\n },\n\n attachmentContainer: {\n flexDirection: 'row',\n marginTop: 8,\n },\n attachmentLogo: {\n height: 48,\n width: 40,\n borderRadius: 4,\n justifyContent: 'center',\n marginRight: 20,\n },\n attachmentLogoText: {\n textAlign: 'center',\n color: '#fff',\n fontFamily: 'sf-bold',\n fontSize: 10,\n },\n attachmentLogoIcon: {\n fontSize: 18,\n },\n attachmentFill: {\n flex: 1,\n justifyContent: 'center',\n },\n attachmentTitle: {\n fontSize: 16,\n lineHeight: 22,\n fontFamily: 'sf-regular',\n color: TEXT_DARK,\n },\n sponsorBanner: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n width: '100%',\n flexDirection: 'row',\n },\n sponsorTouch: {\n flex: 1,\n height: 40,\n flexDirection: 'row',\n alignItems: 'center',\n },\n sponsoredText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: '#fff',\n backgroundColor: 'transparent',\n flex: 1,\n },\n sponsoredTitle: {\n fontFamily: 'sf-medium',\n marginLeft: 4,\n },\n container: {\n flexGrow: 1,\n },\n topContainer: {\n padding: 16,\n },\n bottomContainer: {\n padding: 16,\n },\n title: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n lineHeight: 32,\n color: TEXT_DARK,\n backgroundColor: 'transparent',\n },\n timeText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_LIGHT,\n backgroundColor: 'transparent',\n },\n text: {\n fontSize: 16,\n lineHeight: 22,\n fontFamily: 'sf-regular',\n color: TEXT_DARK,\n backgroundColor: 'transparent',\n },\n headerContent: {\n height: 70,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: 15,\n flex: 1,\n },\n fontScalePopup: {\n position: 'absolute',\n top: StatusBarHeight(55),\n right: 5,\n zIndex: 100,\n },\n taggedUsersContainer: {\n marginTop: 8,\n flexDirection: 'row',\n paddingHorizontal: 16,\n alignItems: 'center',\n },\n taggedUsersText: {\n fontFamily: 'sf-bold',\n color: TEXT_DARK,\n fontSize: 10,\n marginLeft: 8,\n },\n authorTimeContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: 16,\n },\n profilePic: {\n marginRight: 8,\n },\n authorText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_DARKEST,\n backgroundColor: 'transparent',\n marginBottom: 4,\n },\n archiveContainer: {\n alignItems: 'center',\n marginTop: 16,\n },\n};\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n user: state.user,\n hideTimestamp: getSiteSettingFromState(state, values.optionHideTimestamp, false),\n archiveList: state[values.reducerKey].archive || [],\n };\n};\n\nexport default withNavigationFocus(connect(mapStateToProps, { softUpdateUser, archivePost, unarchivePost })(NewsletterPost));\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable no-case-declarations */
3
3
  import _ from 'lodash';
4
4
  import { REHYDRATE } from 'redux-persist';
5
- import { LOGOUT, CHANGE_ROLE, NEWS_LOADED, NEWS_ADDED, LOAD_NEWSSUBMISSIONS, REMOVE_NEWSSUBMISSION, FEATUREDNEWS_LOADED, ARCHIVE_POST, UNARCHIVE_POST, SET_SHOW_ARCHIVE } from '../actions/types';
5
+ import { LOGOUT, CHANGE_ROLE, NEWS_LOADED, NEWS_ADDED, LOAD_NEWSSUBMISSIONS, REMOVE_NEWSSUBMISSION, FEATUREDNEWS_LOADED, LOAD_ARCHIVED_POSTS, ARCHIVE_POST, UNARCHIVE_POST, SET_SHOW_ARCHIVE } from '../actions/types';
6
6
  import { NEWS_REDUCER_KEY } from './reducerKeys';
7
7
  const INITIAL_STATE = {
8
8
  list: [],
@@ -20,6 +20,7 @@ export default ((state = INITIAL_STATE, action) => {
20
20
  return INITIAL_STATE;
21
21
  case NEWS_LOADED:
22
22
  if (action.payload.fullRefresh) {
23
+ list = _.filter(action.payload.list, news => !news.Deleted);
23
24
  return {
24
25
  ...state,
25
26
  list: action.payload.list,
@@ -63,6 +64,11 @@ export default ((state = INITIAL_STATE, action) => {
63
64
  return n.Id !== action.payload;
64
65
  })
65
66
  };
67
+ case LOAD_ARCHIVED_POSTS:
68
+ return {
69
+ ...state,
70
+ archive: action.payload
71
+ };
66
72
  case ARCHIVE_POST:
67
73
  return {
68
74
  ...state,
@@ -1 +1 @@
1
- {"version":3,"names":["_","REHYDRATE","LOGOUT","CHANGE_ROLE","NEWS_LOADED","NEWS_ADDED","LOAD_NEWSSUBMISSIONS","REMOVE_NEWSSUBMISSION","FEATUREDNEWS_LOADED","ARCHIVE_POST","UNARCHIVE_POST","SET_SHOW_ARCHIVE","NEWS_REDUCER_KEY","INITIAL_STATE","list","newsSubmissions","featured","lastFullRefresh","archive","showArchive","state","action","type","payload","fullRefresh","timestamp","unionWith","v1","v2","Id","filter","news","Deleted","index","findIndex","item","unshift","n"],"sources":["NewsReducer.js"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable no-case-declarations */\nimport _ from 'lodash';\nimport { REHYDRATE } from 'redux-persist';\nimport {\n LOGOUT,\n CHANGE_ROLE,\n NEWS_LOADED,\n NEWS_ADDED,\n LOAD_NEWSSUBMISSIONS,\n REMOVE_NEWSSUBMISSION,\n FEATUREDNEWS_LOADED,\n ARCHIVE_POST,\n UNARCHIVE_POST,\n SET_SHOW_ARCHIVE,\n} from '../actions/types';\nimport { NEWS_REDUCER_KEY } from './reducerKeys';\n\nconst INITIAL_STATE = {\n list: [],\n newsSubmissions: [],\n featured: [],\n lastFullRefresh: 0,\n archive: [],\n showArchive: false,\n};\n\nexport default (state = INITIAL_STATE, action) => {\n let list = [];\n switch (action.type) {\n case LOGOUT:\n case CHANGE_ROLE:\n return INITIAL_STATE;\n case NEWS_LOADED:\n if (action.payload.fullRefresh) {\n return { ...state, list: action.payload.list, lastFullRefresh: action.payload.timestamp };\n }\n list = _.unionWith(action.payload.list, state.list, (v1, v2) => {\n return v1 != null && v2 != null && v1.Id === v2.Id;\n });\n list = _.filter(list, news => !news.Deleted);\n return { ...state, list };\n case FEATUREDNEWS_LOADED:\n return { ...state, featured: action.payload };\n case NEWS_ADDED:\n list = [...state.list];\n const index = list.findIndex(item => item.Id === action.payload.Id);\n if (index > -1) {\n list[index] = action.payload;\n } else {\n list.unshift(action.payload);\n }\n return { ...state, list };\n case LOAD_NEWSSUBMISSIONS:\n return { ...state, newsSubmissions: action.payload };\n case REMOVE_NEWSSUBMISSION:\n return {\n ...state,\n newsSubmissions: _.filter(state.newsSubmissions, n => {\n return n.Id !== action.payload;\n }),\n };\n case ARCHIVE_POST:\n return { ...state, archive: [...state.archive, action.payload] };\n case UNARCHIVE_POST:\n return {\n ...state,\n archive: _.filter(state.archive, n => {\n return n !== action.payload;\n }),\n };\n case SET_SHOW_ARCHIVE:\n return {\n ...state,\n showArchive: action.payload,\n };\n case REHYDRATE:\n if (!action.payload) return state;\n if (action.payload[NEWS_REDUCER_KEY]) {\n return { ...INITIAL_STATE, ...action.payload[NEWS_REDUCER_KEY] };\n }\n return state;\n default:\n return state;\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_","REHYDRATE","LOGOUT","CHANGE_ROLE","NEWS_LOADED","NEWS_ADDED","LOAD_NEWSSUBMISSIONS","REMOVE_NEWSSUBMISSION","FEATUREDNEWS_LOADED","LOAD_ARCHIVED_POSTS","ARCHIVE_POST","UNARCHIVE_POST","SET_SHOW_ARCHIVE","NEWS_REDUCER_KEY","INITIAL_STATE","list","newsSubmissions","featured","lastFullRefresh","archive","showArchive","state","action","type","payload","fullRefresh","filter","news","Deleted","timestamp","unionWith","v1","v2","Id","index","findIndex","item","unshift","n"],"sources":["NewsReducer.js"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable no-case-declarations */\nimport _ from 'lodash';\nimport { REHYDRATE } from 'redux-persist';\nimport {\n LOGOUT,\n CHANGE_ROLE,\n NEWS_LOADED,\n NEWS_ADDED,\n LOAD_NEWSSUBMISSIONS,\n REMOVE_NEWSSUBMISSION,\n FEATUREDNEWS_LOADED,\n LOAD_ARCHIVED_POSTS,\n ARCHIVE_POST,\n UNARCHIVE_POST,\n SET_SHOW_ARCHIVE,\n} from '../actions/types';\nimport { NEWS_REDUCER_KEY } from './reducerKeys';\n\nconst INITIAL_STATE = {\n list: [],\n newsSubmissions: [],\n featured: [],\n lastFullRefresh: 0,\n archive: [],\n showArchive: false,\n};\n\nexport default (state = INITIAL_STATE, action) => {\n let list = [];\n switch (action.type) {\n case LOGOUT:\n case CHANGE_ROLE:\n return INITIAL_STATE;\n case NEWS_LOADED:\n if (action.payload.fullRefresh) {\n list = _.filter(action.payload.list, news => !news.Deleted);\n return { ...state, list: action.payload.list, lastFullRefresh: action.payload.timestamp };\n }\n list = _.unionWith(action.payload.list, state.list, (v1, v2) => {\n return v1 != null && v2 != null && v1.Id === v2.Id;\n });\n list = _.filter(list, news => !news.Deleted);\n return { ...state, list };\n case FEATUREDNEWS_LOADED:\n return { ...state, featured: action.payload };\n case NEWS_ADDED:\n list = [...state.list];\n const index = list.findIndex(item => item.Id === action.payload.Id);\n if (index > -1) {\n list[index] = action.payload;\n } else {\n list.unshift(action.payload);\n }\n return { ...state, list };\n case LOAD_NEWSSUBMISSIONS:\n return { ...state, newsSubmissions: action.payload };\n case REMOVE_NEWSSUBMISSION:\n return {\n ...state,\n newsSubmissions: _.filter(state.newsSubmissions, n => {\n return n.Id !== action.payload;\n }),\n };\n case LOAD_ARCHIVED_POSTS:\n return { ...state, archive: action.payload };\n case ARCHIVE_POST:\n return { ...state, archive: [...state.archive, action.payload] };\n case UNARCHIVE_POST:\n return {\n ...state,\n archive: _.filter(state.archive, n => {\n return n !== action.payload;\n }),\n };\n case SET_SHOW_ARCHIVE:\n return {\n ...state,\n showArchive: action.payload,\n };\n case REHYDRATE:\n if (!action.payload) return state;\n if (action.payload[NEWS_REDUCER_KEY]) {\n return { ...INITIAL_STATE, ...action.payload[NEWS_REDUCER_KEY] };\n }\n return state;\n default:\n return state;\n }\n};\n"],"mappings":"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"}
@@ -3,5 +3,6 @@ export const userActions = Apis.userActions;
3
3
  export const contactActions = Apis.contactActions;
4
4
  export const eventActions = Apis.eventActions;
5
5
  export const analyticsActions = Apis.analyticsActions;
6
+ export const settingActions = Apis.settingActions;
6
7
  export * from './newsActions';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Apis","userActions","contactActions","eventActions","analyticsActions"],"sources":["index.js"],"sourcesContent":["import { Apis } from '../core.config';\n\nexport const userActions = Apis.userActions;\nexport const contactActions = Apis.contactActions;\nexport const eventActions = Apis.eventActions;\nexport const analyticsActions = Apis.analyticsActions;\n\nexport * from './newsActions';\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,gBAAgB;AAErC,OAAO,MAAMC,WAAW,GAAGD,IAAI,CAACC,WAAW;AAC3C,OAAO,MAAMC,cAAc,GAAGF,IAAI,CAACE,cAAc;AACjD,OAAO,MAAMC,YAAY,GAAGH,IAAI,CAACG,YAAY;AAC7C,OAAO,MAAMC,gBAAgB,GAAGJ,IAAI,CAACI,gBAAgB;AAErD,cAAc,eAAe"}
1
+ {"version":3,"names":["Apis","userActions","contactActions","eventActions","analyticsActions","settingActions"],"sources":["index.js"],"sourcesContent":["import { Apis } from '../core.config';\n\nexport const userActions = Apis.userActions;\nexport const contactActions = Apis.contactActions;\nexport const eventActions = Apis.eventActions;\nexport const analyticsActions = Apis.analyticsActions;\nexport const settingActions = Apis.settingActions;\n\nexport * from './newsActions';\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,gBAAgB;AAErC,OAAO,MAAMC,WAAW,GAAGD,IAAI,CAACC,WAAW;AAC3C,OAAO,MAAMC,cAAc,GAAGF,IAAI,CAACE,cAAc;AACjD,OAAO,MAAMC,YAAY,GAAGH,IAAI,CAACG,YAAY;AAC7C,OAAO,MAAMC,gBAAgB,GAAGJ,IAAI,CAACI,gBAAgB;AACrD,OAAO,MAAMC,cAAc,GAAGL,IAAI,CAACK,cAAc;AAEjD,cAAc,eAAe"}
@@ -1,5 +1,6 @@
1
1
  import { getUrl } from './helper';
2
- import { authedFunction } from '../js';
2
+ import { authedFunction, getSite } from '../js';
3
+ import { settingActions } from '.';
3
4
  import { values } from '../values.config';
4
5
  export const newsActions = {
5
6
  getRecent: (site, limit, maxTime, noFuture) => {
@@ -102,6 +103,24 @@ export const newsActions = {
102
103
  url
103
104
  })
104
105
  });
106
+ },
107
+ getArchivedPosts: async site => {
108
+ const {
109
+ data
110
+ } = await settingActions.getSetting(getSite(site), `${values.featureKey}-archived-posts`);
111
+ return data === null || data === void 0 ? void 0 : data.Value;
112
+ },
113
+ setArchivedPosts: (site, ids) => {
114
+ return settingActions.setSetting(getSite(site), `${values.featureKey}-archived-posts`, ids);
115
+ },
116
+ getArchivedPostsShow: async site => {
117
+ const {
118
+ data
119
+ } = await settingActions.getSetting(getSite(site), `${values.featureKey}-archived-posts-show`);
120
+ return data === null || data === void 0 ? void 0 : data.Value;
121
+ },
122
+ setArchivedPostsShow: (site, show) => {
123
+ return settingActions.setSetting(getSite(site), `${values.featureKey}-archived-posts-show`, show);
105
124
  }
106
125
  };
107
126
  //# sourceMappingURL=newsActions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getUrl","authedFunction","values","newsActions","getRecent","site","limit","maxTime","noFuture","query","method","url","serviceKey","getEntries","minTime","getFeaturedEntries","time","count","getEntry","id","add","data","Site","update","hasAccess","getTaggedNews","userId","getSubmissions","handleNewsletterSubmission","action","getOpenGraph"],"sources":["newsActions.js"],"sourcesContent":["import { getUrl } from './helper';\nimport { authedFunction } from '../js';\nimport { values } from '../values.config';\n\nexport const newsActions = {\n getRecent: (site, limit, maxTime, noFuture) => {\n const query = { site, limit, maxTime };\n if (noFuture) {\n query.noFuture = noFuture;\n }\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'recent', query),\n });\n },\n getEntries: (site, minTime, maxTime) => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'get', { site, minTime, maxTime, noFuture: 'true' }),\n });\n },\n getFeaturedEntries: (site, time, count) => {\n const query = {\n site,\n };\n if (time) {\n query.time = time;\n }\n if (count) {\n query.count = count;\n }\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'getFeatured', query),\n });\n },\n getEntry: id => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, `get/${id}`),\n });\n },\n add: data => {\n return authedFunction({\n method: 'POST',\n url: getUrl(values.serviceKey, 'add'),\n data: {\n site: data.Site,\n update: data,\n },\n });\n },\n hasAccess: site => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'access', { site }),\n });\n },\n getTaggedNews: (userId, minTime, maxTime) => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'tagged/get', { userId, minTime, maxTime }),\n });\n },\n getSubmissions: site => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'submissions/get', { site }),\n });\n },\n handleNewsletterSubmission: (site, id, action) => {\n return authedFunction({\n method: 'POST',\n url: getUrl(values.serviceKey, 'submissions/handle'),\n data: {\n site,\n id,\n action,\n },\n });\n },\n getOpenGraph: url => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, `get2/opengraph`, { url }),\n });\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["getUrl","authedFunction","getSite","settingActions","values","newsActions","getRecent","site","limit","maxTime","noFuture","query","method","url","serviceKey","getEntries","minTime","getFeaturedEntries","time","count","getEntry","id","add","data","Site","update","hasAccess","getTaggedNews","userId","getSubmissions","handleNewsletterSubmission","action","getOpenGraph","getArchivedPosts","getSetting","featureKey","Value","setArchivedPosts","ids","setSetting","getArchivedPostsShow","setArchivedPostsShow","show"],"sources":["newsActions.js"],"sourcesContent":["import { getUrl } from './helper';\nimport { authedFunction, getSite } from '../js';\nimport { settingActions } from '.';\nimport { values } from '../values.config';\n\nexport const newsActions = {\n getRecent: (site, limit, maxTime, noFuture) => {\n const query = { site, limit, maxTime };\n if (noFuture) {\n query.noFuture = noFuture;\n }\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'recent', query),\n });\n },\n getEntries: (site, minTime, maxTime) => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'get', { site, minTime, maxTime, noFuture: 'true' }),\n });\n },\n getFeaturedEntries: (site, time, count) => {\n const query = {\n site,\n };\n if (time) {\n query.time = time;\n }\n if (count) {\n query.count = count;\n }\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'getFeatured', query),\n });\n },\n getEntry: id => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, `get/${id}`),\n });\n },\n add: data => {\n return authedFunction({\n method: 'POST',\n url: getUrl(values.serviceKey, 'add'),\n data: {\n site: data.Site,\n update: data,\n },\n });\n },\n hasAccess: site => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'access', { site }),\n });\n },\n getTaggedNews: (userId, minTime, maxTime) => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'tagged/get', { userId, minTime, maxTime }),\n });\n },\n getSubmissions: site => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, 'submissions/get', { site }),\n });\n },\n handleNewsletterSubmission: (site, id, action) => {\n return authedFunction({\n method: 'POST',\n url: getUrl(values.serviceKey, 'submissions/handle'),\n data: {\n site,\n id,\n action,\n },\n });\n },\n getOpenGraph: url => {\n return authedFunction({\n method: 'GET',\n url: getUrl(values.serviceKey, `get2/opengraph`, { url }),\n });\n },\n getArchivedPosts: async site => {\n const { data } = await settingActions.getSetting(getSite(site), `${values.featureKey}-archived-posts`);\n return data?.Value;\n },\n setArchivedPosts: (site, ids) => {\n return settingActions.setSetting(getSite(site), `${values.featureKey}-archived-posts`, ids);\n },\n getArchivedPostsShow: async site => {\n const { data } = await settingActions.getSetting(getSite(site), `${values.featureKey}-archived-posts-show`);\n return data?.Value;\n },\n setArchivedPostsShow: (site, show) => {\n return settingActions.setSetting(getSite(site), `${values.featureKey}-archived-posts-show`, show);\n },\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-newsletter-app-menu",
3
- "version": "6.0.2",
3
+ "version": "6.0.3",
4
4
  "description": "Extension package to enable newsletter on Pluss Communities Platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -28,7 +28,7 @@
28
28
  "license": "ISC",
29
29
  "dependencies": {},
30
30
  "peerDependencies": {
31
- "@plusscommunities/pluss-core-app": "^6.0.2",
31
+ "@plusscommunities/pluss-core-app": "6.1.7",
32
32
  "axios": "^1.6.8",
33
33
  "lodash": "^4.17.4",
34
34
  "moment": "^2.30.1",
@@ -1,13 +1,16 @@
1
+ import _ from 'lodash';
1
2
  import {
2
3
  NEWS_LOADED,
3
4
  FEATUREDNEWS_LOADED,
4
5
  NEWS_ADDED,
5
6
  LOAD_NEWSSUBMISSIONS,
6
7
  REMOVE_NEWSSUBMISSION,
8
+ LOAD_ARCHIVED_POSTS,
7
9
  ARCHIVE_POST,
8
10
  UNARCHIVE_POST,
9
11
  SET_SHOW_ARCHIVE,
10
12
  } from './types';
13
+ import { newsActions } from '../webapi';
11
14
 
12
15
  export const newsLoaded = (news, fullRefresh, timestamp) => {
13
16
  return {
@@ -43,6 +46,27 @@ export const removeNewsSubmission = id => {
43
46
  };
44
47
  };
45
48
 
49
+ export const getArchivedPostSetting = site => {
50
+ return async dispatch => {
51
+ try {
52
+ // If not already saved on the server, don't override
53
+ const ids = await newsActions.getArchivedPosts(site);
54
+ if (!_.isNil(ids)) dispatch(archivedPostsLoaded(ids));
55
+ const show = await newsActions.getArchivedPostsShow(site);
56
+ if (!_.isNil(show)) dispatch(setShowArchive(show));
57
+ } catch (error) {
58
+ console.log('getArchivedPostSetting', error);
59
+ }
60
+ };
61
+ };
62
+
63
+ export const archivedPostsLoaded = ids => {
64
+ return {
65
+ type: LOAD_ARCHIVED_POSTS,
66
+ payload: ids,
67
+ };
68
+ };
69
+
46
70
  export const archivePost = id => {
47
71
  return {
48
72
  type: ARCHIVE_POST,
@@ -10,6 +10,7 @@ export const FEATUREDNEWS_LOADED = values.actionFeaturedNewsLoaded;
10
10
  export const NEWS_ADDED = values.actionNewsAdded;
11
11
  export const LOAD_NEWSSUBMISSIONS = values.actionLoadNewsSubmissions;
12
12
  export const REMOVE_NEWSSUBMISSION = values.actionRemoveNewsSubmission;
13
+ export const LOAD_ARCHIVED_POSTS = `LOAD_ARCHIVED_POSTS_${values.featureKey}`;
13
14
  export const ARCHIVE_POST = `ARCHIVE_POST_${values.featureKey}`;
14
15
  export const UNARCHIVE_POST = `UNARCHIVE_POST_${values.featureKey}`;
15
16
  export const SET_SHOW_ARCHIVE = `SET_SHOW_ARCHIVE_${values.featureKey}`;
@@ -4,21 +4,31 @@ import _ from 'lodash';
4
4
  import { connect } from 'react-redux';
5
5
  import { values } from '../../values.config';
6
6
  import { setShowArchive } from '../../actions';
7
+ import { newsActions } from '../../webapi';
7
8
  import { TextStyle } from '../common';
8
9
 
9
- const ArchiveToggle = ({ showArchive, archiveList, setShowArchive, sectionStyle }) => {
10
+ const ArchiveToggle = ({ site, showArchive, archiveList, setShowArchive, sectionStyle }) => {
10
11
  if (_.isEmpty(archiveList)) {
11
12
  return null;
12
13
  }
13
14
  return (
14
15
  <View style={[styles.section, sectionStyle]}>
15
- <Switch value={showArchive} onValueChange={() => setShowArchive(!showArchive)} style={styles.switch} />
16
+ <Switch
17
+ value={showArchive}
18
+ onValueChange={() => {
19
+ const newValue = !showArchive;
20
+ setShowArchive(newValue);
21
+ newsActions.setArchivedPostsShow(site, newValue);
22
+ }}
23
+ style={styles.switch}
24
+ />
16
25
  <TextStyle type="label">Show archived posts</TextStyle>
17
26
  </View>
18
27
  );
19
28
  };
20
29
 
21
30
  const mapStateToProps = state => ({
31
+ site: state.user.site,
22
32
  showArchive: state[values.reducerKey].showArchive,
23
33
  archiveList: state[values.reducerKey].archive || [],
24
34
  });
@@ -4,7 +4,7 @@ import _ from 'lodash';
4
4
  import moment from 'moment';
5
5
  import { connect } from 'react-redux';
6
6
  import { newsActions } from '../../webapi';
7
- import { newsLoaded } from '../../actions';
7
+ import { newsLoaded, getArchivedPostSetting } from '../../actions';
8
8
  import { InlineButton, EmptyStateMain } from '../common';
9
9
  import { getSiteSettingFromState, getMainBrandingColourFromState } from '../../js';
10
10
  import NewsletterEntryPreview from './NewsletterEntryPreview';
@@ -36,6 +36,7 @@ class NewsList extends Component {
36
36
  try {
37
37
  await this.loadMoreNews(false);
38
38
  await this.loadTaggedNews();
39
+ this.props.getArchivedPostSetting(this.props.site);
39
40
  } catch (error) {
40
41
  console.log('NewsList - refresh error', error);
41
42
  } finally {
@@ -224,4 +225,4 @@ const mapStateToProps = state => {
224
225
  };
225
226
  };
226
227
 
227
- export default connect(mapStateToProps, { newsLoaded }, null, { forwardRef: true })(NewsList);
228
+ export default connect(mapStateToProps, { newsLoaded, getArchivedPostSetting }, null, { forwardRef: true })(NewsList);
@@ -9,7 +9,6 @@ import NewsList from './NewsList';
9
9
  import Styles from '../../js/Styles';
10
10
  import { BaseComponents } from '../../feature.config';
11
11
  import { values } from '../../values.config';
12
- import ArchiveToggle from './ArchiveToggle';
13
12
 
14
13
  class NewsPage extends Component {
15
14
  constructor(props) {
@@ -5,7 +5,7 @@ import moment from 'moment';
5
5
  import _ from 'lodash';
6
6
  import { EmptyStateWidget, InlineButton, LoadingStateWidget } from '../common';
7
7
  import { newsActions } from '../../webapi';
8
- import { newsLoaded } from '../../actions';
8
+ import { newsLoaded, getArchivedPostSetting } from '../../actions';
9
9
  import { getMainBrandingColourFromState, TEXT_DARKEST } from '../../js';
10
10
  import NewsWidgetItem from './NewsWidgetItem';
11
11
  import ArchiveToggle from './ArchiveToggle';
@@ -51,6 +51,7 @@ class NewsWidget extends Component {
51
51
  try {
52
52
  await this.loadMoreNews();
53
53
  await this.loadTaggedNews();
54
+ this.props.getArchivedPostSetting(this.props.site);
54
55
  } catch (error) {
55
56
  console.log('NewsWidget - refresh error', error);
56
57
  } finally {
@@ -201,4 +202,4 @@ const mapStateToProps = state => {
201
202
  };
202
203
  };
203
204
 
204
- export default connect(mapStateToProps, { newsLoaded }, null, { forwardRef: true })(NewsWidget);
205
+ export default connect(mapStateToProps, { newsLoaded, getArchivedPostSetting }, null, { forwardRef: true })(NewsWidget);
@@ -79,13 +79,20 @@ class NewsletterPost extends Component {
79
79
  this.checkLog(this.props.update);
80
80
  }
81
81
  if (!this.props.update || this.props.update.Type !== 'WelcomePage') {
82
- newsActions.getEntry(this.props.update ? this.props.update.RowId : this.props.id).then(res => {
83
- this.setState({
84
- loadingUpdate: false,
85
- update: res.data,
82
+ newsActions
83
+ .getEntry(this.props.update ? this.props.update.RowId : this.props.id)
84
+ .then(res => {
85
+ this.setState({
86
+ loadingUpdate: false,
87
+ update: res.data,
88
+ });
89
+ this.checkLog(res.data);
90
+ })
91
+ .catch(err => {
92
+ if (err.response && err.response.status === 404) {
93
+ NavigationService.goBack();
94
+ }
86
95
  });
87
- this.checkLog(res.data);
88
- });
89
96
  }
90
97
 
91
98
  setTimeout(() => {
@@ -95,6 +102,12 @@ class NewsletterPost extends Component {
95
102
  }, 2000);
96
103
  }
97
104
 
105
+ componentDidUpdate(prevProps) {
106
+ if (!_.isEqual(prevProps.archiveList, this.props.archiveList)) {
107
+ newsActions.setArchivedPosts(this.props.user.site, this.props.archiveList);
108
+ }
109
+ }
110
+
98
111
  onPressBack() {
99
112
  if (this.props.back) {
100
113
  NavigationService.goBack(this.props.back);
@@ -10,6 +10,7 @@ import {
10
10
  LOAD_NEWSSUBMISSIONS,
11
11
  REMOVE_NEWSSUBMISSION,
12
12
  FEATUREDNEWS_LOADED,
13
+ LOAD_ARCHIVED_POSTS,
13
14
  ARCHIVE_POST,
14
15
  UNARCHIVE_POST,
15
16
  SET_SHOW_ARCHIVE,
@@ -33,6 +34,7 @@ export default (state = INITIAL_STATE, action) => {
33
34
  return INITIAL_STATE;
34
35
  case NEWS_LOADED:
35
36
  if (action.payload.fullRefresh) {
37
+ list = _.filter(action.payload.list, news => !news.Deleted);
36
38
  return { ...state, list: action.payload.list, lastFullRefresh: action.payload.timestamp };
37
39
  }
38
40
  list = _.unionWith(action.payload.list, state.list, (v1, v2) => {
@@ -60,6 +62,8 @@ export default (state = INITIAL_STATE, action) => {
60
62
  return n.Id !== action.payload;
61
63
  }),
62
64
  };
65
+ case LOAD_ARCHIVED_POSTS:
66
+ return { ...state, archive: action.payload };
63
67
  case ARCHIVE_POST:
64
68
  return { ...state, archive: [...state.archive, action.payload] };
65
69
  case UNARCHIVE_POST:
@@ -4,5 +4,6 @@ export const userActions = Apis.userActions;
4
4
  export const contactActions = Apis.contactActions;
5
5
  export const eventActions = Apis.eventActions;
6
6
  export const analyticsActions = Apis.analyticsActions;
7
+ export const settingActions = Apis.settingActions;
7
8
 
8
9
  export * from './newsActions';
@@ -1,5 +1,6 @@
1
1
  import { getUrl } from './helper';
2
- import { authedFunction } from '../js';
2
+ import { authedFunction, getSite } from '../js';
3
+ import { settingActions } from '.';
3
4
  import { values } from '../values.config';
4
5
 
5
6
  export const newsActions = {
@@ -85,4 +86,18 @@ export const newsActions = {
85
86
  url: getUrl(values.serviceKey, `get2/opengraph`, { url }),
86
87
  });
87
88
  },
89
+ getArchivedPosts: async site => {
90
+ const { data } = await settingActions.getSetting(getSite(site), `${values.featureKey}-archived-posts`);
91
+ return data?.Value;
92
+ },
93
+ setArchivedPosts: (site, ids) => {
94
+ return settingActions.setSetting(getSite(site), `${values.featureKey}-archived-posts`, ids);
95
+ },
96
+ getArchivedPostsShow: async site => {
97
+ const { data } = await settingActions.getSetting(getSite(site), `${values.featureKey}-archived-posts-show`);
98
+ return data?.Value;
99
+ },
100
+ setArchivedPostsShow: (site, show) => {
101
+ return settingActions.setSetting(getSite(site), `${values.featureKey}-archived-posts-show`, show);
102
+ },
88
103
  };