<template>
  <div class="image-content-container">
    <img
      ref="thumbnail"
      v-show="imageLoaded === false"
      @click="preview(message)"
      v-bind:src="'data:video/jpeg;base64,' + message.messageContent.thumbnail"
    />
    <img
      ref="img"
      v-show="imageLoaded"
      @click="preview(message)"
      @load="onImageLoaded"
      draggable="true"
      v-bind:src="message.messageContent.remotePath"
    />
  </div>
</template>

<script>
import Message from "../../../../../wfc/messages/message";
import { previewMM } from "../../../../../platformHelper";
import { scaleDown } from "../../../../util/imageUtil";

export default {
  name: "ImageMessageContentView",
  props: {
    message: {
      type: Message,
      required: true,
    },
    isInCompositeView: {
      default: false,
      type: Boolean,
      required: false,
    },
  },
  data() {
    return {
      imageLoaded: false,
    };
  },
  mounted() {
    let iw = this.message.messageContent.imageWidth;
    let ih = this.message.messageContent.imageHeight;
    if (iw && ih) {
      let size = scaleDown(iw, ih, 300, 300);
      if (size) {
        this.$refs.img.style.height = size.height + "px";
        this.$refs.img.style.width = size.width + "px";
        this.$refs.thumbnail.style.height = size.height + "px";
        this.$refs.thumbnail.style.width = size.width + "px";
      }
    }
  },
  methods: {
    preview(message) {
      if (this.isInCompositeView) {
        this.$parent.previewCompositeMessage(message.messageUid);
      } else {
        console.log("preview", message);
        previewMM(message);
      }
    },
    onImageLoaded() {
      this.imageLoaded = true;
    },
  },
};
</script>

<style lang="css" scoped>
.image-content-container {
  margin: 0 10px;
  position: relative;
  border: 1px solid #efefef;
  border-radius: 5px;
}

.image-content-container img {
  max-height: 300px;
  max-width: 300px;
  border-radius: 5px;
  overflow: hidden;
  object-fit: scale-down;
}

.right-arrow:before {
  border-left-color: white;
}

.left-arrow:before {
  border-left-color: white;
}
</style>
