File size: 2,469 Bytes
41e1749
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// Document import — TXT and DOCX

/**
 * Import a .txt file via FileReader
 * @param {File} file
 */
function importTxtFile(file) {
  if (!validateFileSize(file)) {
    showDocToast('الملف كبير جداً. الحد الأقصى ٢ ميغابايت.', 'error');
    return;
  }

  const reader = new FileReader();
  reader.onload = (e) => {
    try {
      const text = normalizeImportedText(e.target.result);
      loadDocumentText(text, { filename: file.name });
      showDocToast('تم تحميل الملف بنجاح', 'success');
    } catch (err) {
      console.error('TXT import error:', err);
      showDocToast('تعذر قراءة الملف النصي', 'error');
    }
  };
  reader.onerror = () => {
    showDocToast('فشل قراءة الملف', 'error');
  };
  reader.readAsText(file, 'UTF-8');
}

/**
 * Import a .docx file via Mammoth extractRawText
 * @param {File} file
 */
async function importDocxFile(file) {
  if (typeof mammoth === 'undefined') {
    showDocToast('مكتبة Word غير محمّلة', 'error');
    return;
  }

  if (!validateFileSize(file)) {
    showDocToast('الملف كبير جداً. الحد الأقصى ٢ ميغابايت.', 'error');
    return;
  }

  try {
    const arrayBuffer = await file.arrayBuffer();
    const result = await mammoth.extractRawText({ arrayBuffer });

    if (result.messages && result.messages.length) {
      console.warn('Mammoth messages:', result.messages);
    }

    const text = normalizeImportedText(result.value || '');
    if (!text.trim()) {
      showDocToast('الملف لا يحتوي على نص', 'error');
      return;
    }

    loadDocumentText(text, { filename: file.name });
    showDocToast('تم تحميل مستند Word بنجاح', 'success');
  } catch (err) {
    console.error('DOCX import error:', err);
    showDocToast('تعذر قراءة ملف Word. قد يكون تالفاً.', 'error');
  }
}

/**
 * Route file to correct importer by extension
 * @param {File} file
 */
async function handleImportFile(file) {
  if (!file) return;

  const ext = getFileExtension(file.name);

  if (ext === 'txt' || file.type === 'text/plain') {
    importTxtFile(file);
    return;
  }

  if (ext === 'docx' || file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {
    await importDocxFile(file);
    return;
  }

  showDocToast('نوع الملف غير مدعوم. استخدم .txt أو .docx', 'error');
}