diff options
| author | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
|---|---|---|
| committer | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
| commit | 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch) | |
| tree | ab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/helpers/file.js | |
| parent | 5d94c0a7d44a2255b81815a52a7056a94a39842d (diff) | |
| download | RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip | |
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/helpers/file.js')
| -rw-r--r-- | raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/helpers/file.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/helpers/file.js b/raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/helpers/file.js new file mode 100644 index 0000000..a7211b9 --- /dev/null +++ b/raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/helpers/file.js @@ -0,0 +1,82 @@ +import Gio from 'gi://Gio'; +import GLib from 'gi://GLib' + +// convert Uint8Array into a literal string +function convertUint8ArrayToString(contents) { + const decoder = new TextDecoder('utf-8'); + return decoder.decode(contents).trim(); +} + +export function File(path) { + if (path.indexOf('https://') == -1) + this.file = Gio.File.new_for_path(path); + else + this.file = Gio.File.new_for_uri(path); +} + +File.prototype.read = function(delimiter = '', strip_header = false) { + return new Promise((resolve, reject) => { + try { + this.file.load_contents_async(null, function(file, res) { + try { + // grab contents of file or website + let contents = file.load_contents_finish(res)[1]; + + // convert contents to string + contents = convertUint8ArrayToString(contents); + + // split contents by delimiter if passed in + if (delimiter) contents = contents.split(delimiter); + + // optionally strip header when converting to a list + if (strip_header) contents.shift(); + + // return results + resolve(contents); + } catch (e) { + reject(e.message); + } + }); + } catch (e) { + reject(e.message); + } + }); +}; + +File.prototype.list = function() { + return new Promise((resolve, reject) => { + let max_items = 125, results = []; + + try { + this.file.enumerate_children_async(Gio.FILE_ATTRIBUTE_STANDARD_NAME, Gio.FileQueryInfoFlags.NONE, GLib.PRIORITY_LOW, null, function(file, res) { + try { + let enumerator = file.enumerate_children_finish(res); + + let callback = function(enumerator, res) { + try { + let files = enumerator.next_files_finish(res); + for (let i = 0; i < files.length; i++) { + results.push(files[i].get_attribute_as_string(Gio.FILE_ATTRIBUTE_STANDARD_NAME)); + } + + if (files.length == 0) { + enumerator.close_async(GLib.PRIORITY_LOW, null, function(){}); + resolve(results); + } else { + enumerator.next_files_async(max_items, GLib.PRIORITY_LOW, null, callback); + } + } catch (e) { + reject(e.message); + } + }; + + enumerator.next_files_async(max_items, GLib.PRIORITY_LOW, null, callback); + } catch (e) { + reject(e.message); + } + }); + } catch (e) { + reject(e.message); + } + }); +}; |