stfca 1.0.24 → 1.0.25

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 (2) hide show
  1. package/package.json +1 -1
  2. package/utils.js +33 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stfca",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "description": "Unofficial Facebook Chat API for Node.js with Auto-Update System - Enhanced by ST | Sheikh Tamim",
5
5
  "main": "index.js",
6
6
  "files": [
package/utils.js CHANGED
@@ -724,14 +724,41 @@ function formatAttachment(attachments, attachmentIds, attachmentMap, shareMap) {
724
724
 
725
725
  function formatDeltaMessage(m) {
726
726
  var md = m.delta.messageMetadata;
727
- var mdata = m.delta.data === undefined ? [] : m.delta.data.prng === undefined ? [] : JSON.parse(m.delta.data.prng);
728
- var m_id = mdata.map(u => u.i);
729
- var m_offset = mdata.map(u => u.o);
730
- var m_length = mdata.map(u => u.l);
731
- var mentions = {};
732
727
  var body = m.delta.body || "";
733
728
  var args = body == "" ? [] : body.trim().split(/\s+/);
734
- for (var i = 0; i < m_id.length; i++) mentions[m_id[i]] = m.delta.body.substring(m_offset[i], m_offset[i] + m_length[i]);
729
+ var mentions = {};
730
+ var mdata = [];
731
+ if (m.delta.data && m.delta.data.prng) {
732
+ try {
733
+ mdata = JSON.parse(m.delta.data.prng);
734
+ } catch (e) {
735
+ mdata = [];
736
+ }
737
+ }
738
+ if (mdata.length > 0) {
739
+ for (var i = 0; i < mdata.length; i++) {
740
+ var _id = String(mdata[i].i);
741
+ var _o = parseInt(mdata[i].o, 10) || 0;
742
+ var _l = parseInt(mdata[i].l, 10) || 0;
743
+ mentions[_id] = body.substring(_o, _o + _l);
744
+ }
745
+ } else if (
746
+ md && md.data && md.data.data && md.data.data.Gb &&
747
+ md.data.data.Gb.asMap && md.data.data.Gb.asMap.data
748
+ ) {
749
+ var gbData = md.data.data.Gb.asMap.data;
750
+ for (var key in gbData) {
751
+ if (!Object.prototype.hasOwnProperty.call(gbData, key)) continue;
752
+ var entry = gbData[key];
753
+ if (entry && entry.asMap && entry.asMap.data) {
754
+ var d = entry.asMap.data;
755
+ var _gid = d.id && d.id.asLong ? String(d.id.asLong) : null;
756
+ var _go = parseInt(d.offset && d.offset.asLong ? d.offset.asLong : 0, 10);
757
+ var _gl = parseInt(d.length && d.length.asLong ? d.length.asLong : 0, 10);
758
+ if (_gid != null) mentions[_gid] = body.substring(_go, _go + _gl);
759
+ }
760
+ }
761
+ }
735
762
 
736
763
  // Determine if this is a DM or group
737
764
  const otherUserFbId = md.threadKey.otherUserFbId;