@selfcommunity/react-ui 0.7.9-alpha.67 → 0.7.9-alpha.68

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.
@@ -204,8 +204,10 @@ function FeedObject(inProps) {
204
204
  /**
205
205
  * Handle change/update poll: votes
206
206
  */
207
- const handleChangePoll = (0, react_1.useCallback)((pollObject) => {
208
- updateObject(Object.assign({}, obj, { poll: pollObject }));
207
+ const handleChangePoll = (0, react_1.useCallback)((pollChoices) => {
208
+ if ('poll' in obj) {
209
+ updateObject(Object.assign({}, obj, { poll: Object.assign(Object.assign({}, obj.poll), { choices: pollChoices }) }));
210
+ }
209
211
  }, [obj]);
210
212
  /**
211
213
  * Handle change poll visibility
@@ -69,36 +69,36 @@ function PollObject(props) {
69
69
  * Handles choice upvote
70
70
  */
71
71
  const handleVote = (id) => {
72
+ const prevChoices = [...choices];
73
+ let updatedChoices;
72
74
  if (multipleChoices) {
73
- setChoices((prevChoices) => {
74
- return prevChoices.map((choice) => Object.assign({}, choice, {
75
- voted: choice.id === id ? true : choice.voted,
76
- vote_count: choice.id === id ? choice.vote_count + 1 : choice.vote_count
77
- }));
78
- });
75
+ updatedChoices = prevChoices.map((choice) => Object.assign({}, choice, {
76
+ voted: choice.id === id ? true : choice.voted,
77
+ vote_count: choice.id === id ? choice.vote_count + 1 : choice.vote_count
78
+ }));
79
79
  setVotes((prevVotes) => prevVotes + 1);
80
80
  }
81
81
  else {
82
- setChoices((prevChoices) => {
83
- const updatedChoices = prevChoices.map((choice) => {
84
- return Object.assign(Object.assign({}, choice), { voted: choice.id === id, vote_count: choice.id === id ? choice.vote_count + 1 : choice.vote_count > 0 && choice.voted ? choice.vote_count - 1 : choice.vote_count });
85
- });
86
- const newVotes = updatedChoices.reduce((totalVotes, choice) => totalVotes + choice.vote_count, 0);
87
- setVotes(newVotes);
88
- return updatedChoices;
89
- });
82
+ updatedChoices = prevChoices.map((choice) => Object.assign({}, choice, {
83
+ voted: choice.id === id,
84
+ vote_count: choice.id === id ? choice.vote_count + 1 : choice.vote_count > 0 && choice.voted ? choice.vote_count - 1 : choice.vote_count
85
+ }));
86
+ setVotes(updatedChoices.reduce((totalVotes, choice) => totalVotes + choice.vote_count, 0));
90
87
  }
88
+ setChoices(updatedChoices);
89
+ onChange(updatedChoices);
91
90
  };
92
91
  /**
93
92
  * Handles choice unvote
94
93
  */
95
94
  const handleUnVote = (id) => {
96
- setChoices((prevChoices) => {
97
- return prevChoices.map((choice) => Object.assign({}, choice, {
98
- voted: choice.id === id ? false : choice.voted,
99
- vote_count: choice.id === id && choice.vote_count > 0 ? choice.vote_count - 1 : choice.vote_count
100
- }));
101
- });
95
+ const prevChoices = [...choices];
96
+ const updatedChoices = prevChoices.map((choice) => Object.assign({}, choice, {
97
+ voted: choice.id === id ? false : choice.voted,
98
+ vote_count: choice.id === id && choice.vote_count > 0 ? choice.vote_count - 1 : choice.vote_count
99
+ }));
100
+ setChoices(updatedChoices);
101
+ onChange(updatedChoices);
102
102
  setVotes((prevVotes) => prevVotes - 1);
103
103
  };
104
104
  /**
@@ -202,8 +202,10 @@ export default function FeedObject(inProps) {
202
202
  /**
203
203
  * Handle change/update poll: votes
204
204
  */
205
- const handleChangePoll = useCallback((pollObject) => {
206
- updateObject(Object.assign({}, obj, { poll: pollObject }));
205
+ const handleChangePoll = useCallback((pollChoices) => {
206
+ if ('poll' in obj) {
207
+ updateObject(Object.assign({}, obj, { poll: Object.assign(Object.assign({}, obj.poll), { choices: pollChoices }) }));
208
+ }
207
209
  }, [obj]);
208
210
  /**
209
211
  * Handle change poll visibility
@@ -67,36 +67,36 @@ export default function PollObject(props) {
67
67
  * Handles choice upvote
68
68
  */
69
69
  const handleVote = (id) => {
70
+ const prevChoices = [...choices];
71
+ let updatedChoices;
70
72
  if (multipleChoices) {
71
- setChoices((prevChoices) => {
72
- return prevChoices.map((choice) => Object.assign({}, choice, {
73
- voted: choice.id === id ? true : choice.voted,
74
- vote_count: choice.id === id ? choice.vote_count + 1 : choice.vote_count
75
- }));
76
- });
73
+ updatedChoices = prevChoices.map((choice) => Object.assign({}, choice, {
74
+ voted: choice.id === id ? true : choice.voted,
75
+ vote_count: choice.id === id ? choice.vote_count + 1 : choice.vote_count
76
+ }));
77
77
  setVotes((prevVotes) => prevVotes + 1);
78
78
  }
79
79
  else {
80
- setChoices((prevChoices) => {
81
- const updatedChoices = prevChoices.map((choice) => {
82
- return Object.assign(Object.assign({}, choice), { voted: choice.id === id, vote_count: choice.id === id ? choice.vote_count + 1 : choice.vote_count > 0 && choice.voted ? choice.vote_count - 1 : choice.vote_count });
83
- });
84
- const newVotes = updatedChoices.reduce((totalVotes, choice) => totalVotes + choice.vote_count, 0);
85
- setVotes(newVotes);
86
- return updatedChoices;
87
- });
80
+ updatedChoices = prevChoices.map((choice) => Object.assign({}, choice, {
81
+ voted: choice.id === id,
82
+ vote_count: choice.id === id ? choice.vote_count + 1 : choice.vote_count > 0 && choice.voted ? choice.vote_count - 1 : choice.vote_count
83
+ }));
84
+ setVotes(updatedChoices.reduce((totalVotes, choice) => totalVotes + choice.vote_count, 0));
88
85
  }
86
+ setChoices(updatedChoices);
87
+ onChange(updatedChoices);
89
88
  };
90
89
  /**
91
90
  * Handles choice unvote
92
91
  */
93
92
  const handleUnVote = (id) => {
94
- setChoices((prevChoices) => {
95
- return prevChoices.map((choice) => Object.assign({}, choice, {
96
- voted: choice.id === id ? false : choice.voted,
97
- vote_count: choice.id === id && choice.vote_count > 0 ? choice.vote_count - 1 : choice.vote_count
98
- }));
99
- });
93
+ const prevChoices = [...choices];
94
+ const updatedChoices = prevChoices.map((choice) => Object.assign({}, choice, {
95
+ voted: choice.id === id ? false : choice.voted,
96
+ vote_count: choice.id === id && choice.vote_count > 0 ? choice.vote_count - 1 : choice.vote_count
97
+ }));
98
+ setChoices(updatedChoices);
99
+ onChange(updatedChoices);
100
100
  setVotes((prevVotes) => prevVotes - 1);
101
101
  };
102
102
  /**