class FileUtils {
  static extractFileExtension(filename) {
    if (!filename || filename.trim().length <= 0) return "";
    let trimmedName = filename.trim();
    return trimmedName.substring(trimmedName.lastIndexOf(".") + 1);
  }

  static transformFileSize(size) {
    if (!size) return `0Bs`;
    let oneKB = 1024;
    let oneMB = oneKB * 1024;
    let oneGB = oneMB * 1024;
    let oneTB = oneGB * 1024;

    if (size < oneKB) return `${this._toFixed(size)}Bs`;
    else if (oneKB <= size && size < oneMB) return `${this._toFixed(size / oneKB)}KBs`;
    else if (oneMB <= size && size < oneGB) return `${this._toFixed(size / oneMB)}MBs`;
    else if (oneGB <= size && size < oneTB) return `${this._toFixed(size / oneGB)}GBs`;
    else return `${this._toFixed(size / oneTB)}TBs`;
  }

  static _toFixed(val, digits = 1) {
    // Return value without ending 0s after decimal point
    // Example: if res == 145.0 then return 145, else if 145.x (where x != 0) return 145.x
    let res = val.toFixed(digits);
    let resRounded = (res|0);
    return res == resRounded ? resRounded : res;
  }
}

export default FileUtils;