Fix slackbridge import and slack importer ids conflict

pull/4026/head
Marcelo Schmidt 10 years ago
parent d70a0e84f1
commit e87b9656a6
No known key found for this signature in database
GPG Key ID: CA48C21A7B66097E
  1. 4
      packages/rocketchat-importer-slack/server.coffee
  2. 6
      packages/rocketchat-lib/server/models/Messages.coffee
  3. 2
      packages/rocketchat-slackbridge/slackbridge.js
  4. 27
      server/startup/migrations/v057.js

@ -211,7 +211,7 @@ Importer.Slack = class Importer.Slack extends Importer.Base
@updateRecord { 'messagesstatus': "#{channel}/#{date}.#{msgs.messages.length}" }
for message in msgs.messages
msgDataDefaults =
_id: "slack-#{slackChannel.id}-#{message.ts}"
_id: "slack-#{slackChannel.id}-#{message.ts.replace(/\./g, '-')}"
ts: new Date(parseInt(message.ts.split('.')[0]) * 1000)
if message.type is 'message'
@ -267,7 +267,7 @@ Importer.Slack = class Importer.Slack extends Importer.Base
else if message.subtype is 'file_share'
if message.file?.url_private_download isnt undefined
details =
message_id: "S#{message.ts}"
message_id: "slack-S#{message.ts.replace(/\./g, '-')}"
name: message.file.name
size: message.file.size
type: message.file.mimetype

@ -138,13 +138,7 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base
record.editedBy =
_id: Meteor.userId()
username: me.username
record.pinned = record.pinned
record.pinnedAt = record.pinnedAt
record.pinnedBy =
_id: record.pinnedBy?._id
username: record.pinnedBy?.username
delete record._id
return @insert record
# UPDATE

@ -270,7 +270,7 @@ class SlackBridge {
}
if (channel && user) {
let msgDataDefaults = {
_id: `${message.channel}S${message.ts}`,
_id: `slack-${message.channel}-${message.ts.replace(/\./g, '-')}`,
ts: new Date(parseInt(message.ts.split('.')[0]) * 1000)
};
this.sendMessage(channel, user, message, msgDataDefaults);

@ -0,0 +1,27 @@
RocketChat.Migrations.add({
version: 57,
up: function() {
RocketChat.models.Messages.find({ _id: /slack-([a-zA-Z0-9]+)S([0-9]+-[0-9]+)/ }).forEach(function(message) {
var oldId = message._id;
message._id = message._id.replace(/slack-([a-zA-Z0-9]+)S([0-9]+-[0-9]+)/, 'slack-$1-$2');
RocketChat.models.Messages.insert(message);
RocketChat.models.Messages.remove({ _id: oldId });
});
RocketChat.models.Messages.find({ _id: /slack-slack/ }).forEach(function(message) {
var oldId = message._id;
message._id = message._id.replace('slack-slack', 'slack');
RocketChat.models.Messages.insert(message);
RocketChat.models.Messages.remove({ _id: oldId });
});
RocketChat.models.Messages.find({ _id: /\./ }).forEach(function(message) {
var oldId = message._id;
message._id = message._id.replace(/(.*)\.?S(.*)/, 'slack-$1-$2');
message._id = message._id.replace(/\./g, '-');
RocketChat.models.Messages.remove({ _id: message._id });
RocketChat.models.Messages.insert(message);
RocketChat.models.Messages.remove({ _id: oldId });
});
}
});
Loading…
Cancel
Save