// this is image_share.js
Images = new Mongo.Collection("images");

if (Meteor.isClient) {
  Accounts.ui.config({
    passwordSignupFields: "USERNAME_AND_EMAIL"
  });

  const getUser = (userId) => {
    let user = Meteor.users.findOne({ _id: userId });
    return user ? user.username : "anonymous";
  };

  Template.images.helpers({ getUser,
    images: function () {
      const createdBy = Session.get("userFilter");
      const selector = createdBy ? { createdBy } : {};
      return Images.find(selector, { sort: { createdOn: -1, rating: -1 }});
    },
    filtering_images: function () {
      const userFilter = Session.get("userFilter");
      return !!userFilter;
    },
    image_id: function () {
      return "rating-" + this._id;
    },
    getFilterUser: function () {
      const userFilter = Session.get("userFilter");
      return getUser(userFilter);
    }
  });

  Template.body.helpers({
    username: function () {
      let user = Meteor.user();
      let name = user ? user.username : "anon";
      return name;
    }
  });

  Template.images.events({
    "click .js-image": function (event) {
      $(event.target).css("width", "50px");
    },
    "click .js-del-image": function (event) {
      let imageId = this._id;
      console.log(imageId);
      // use jquery to hide the image component
      // then remove it at the end of the animation
      $("#" + imageId).hide("slow", function () {
        Images.remove({ _id: imageId });
      });
    },
    "click .js-rate-image": function (event) {
      let rating = $(event.currentTarget).data("userrating");
      let imageId = this.id.substring(7); // "rating-".length = 7.
      console.log(imageId);

      Images.update({ _id: imageId },
        { $set: { rating: rating }}
      );
    },
    "click .js-show-image-form": function () {
      $("#image_add_form").modal("show");
    },
    "click .js-set-image-filter": function () {
      Session.set("userFilter", this.createdBy);
    },
    "click .js-unset-image-filter": () => {
      Session.delete("userFilter");
    }
  });

  Template.image_add_form.events({
    'submit .js-add-image': function (event) {
      let img_src = event.target.img_src.value;
      let img_alt = event.target.img_alt.value;
      console.log("src: " + img_src + " alt: " + img_alt);

      if (Meteor.user()) {
        Images.insert({
          img_src: img_src,
          img_alt: img_alt,
          createdOn: new Date(),
          createdBy: Meteor.userId()
        });
      }
      $("#image_add_form").modal("hide");
      return false;
    }
  });
}