FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Add iOS-specific known folders to fs.knownFolders by hamorphis · Pull Request #2475 · NativeScript/NativeScript · GitHub

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .json  (3) .ts  (4) All 2 file types selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
3 changes: 2 additions & 1 deletion apps/tsconfig.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"noImplicitAny": false,
"noImplicitUseStrict": true,
"experimentalDecorators": true,
"diagnostics": true
"diagnostics": true,
"sourceMap": true
},
"exclude": [
"node_modules",
Expand Down
34 changes: 34 additions & 0 deletions tests/app/file-system-tests.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,40 @@ export var testGetKnownFolders = function () {
// << file-system-known-folders
};

function _testIOSSpecificKnownFolder(knownFolderName: string){
let knownFolder: fs.Folder;
let createdFile: fs.File;
let testFunc = function testFunc(){
knownFolder = fs.knownFolders.ios[knownFolderName]();
createdFile = knownFolder.getFile("createdFile");
createdFile.writeTextSync("some text");
};
if (platform.isIOS){
testFunc();
TKUnit.assertNotNull(knownFolder, `Could not retrieve the ${knownFolderName} known folder.`);
TKUnit.assertTrue(knownFolder.isKnown, `The ${knownFolderName} folder should have its "isKnown" property set to true.`);
TKUnit.assertNotNull(createdFile, `Could not create a new file in the ${knownFolderName} known folder.`);
TKUnit.assertTrue(fs.File.exists(createdFile.path), `Could not create a new file in the ${knownFolderName} known folder.`);
TKUnit.assertEqual(createdFile.readTextSync(), "some text", `The contents of the new file created in the ${knownFolderName} known folder are not as expected.`);
}
else {
TKUnit.assertThrows(testFunc,
`Trying to retrieve the ${knownFolderName} known folder on a platform different from iOS should throw!`,
`The "${knownFolderName}" known folder is available on iOS only!`);
}
}

export var testIOSSpecificKnownFolders = function () {
_testIOSSpecificKnownFolder("library");
_testIOSSpecificKnownFolder("developer");
_testIOSSpecificKnownFolder("desktop");
_testIOSSpecificKnownFolder("downloads");
_testIOSSpecificKnownFolder("movies");
_testIOSSpecificKnownFolder("music");
_testIOSSpecificKnownFolder("pictures");
_testIOSSpecificKnownFolder("sharedPublic");
}

export var testGetEntities = function () {
// >> file-system-folders-content
var documents = fs.knownFolders.documents();
Expand Down
3 changes: 2 additions & 1 deletion tests/tsconfig.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"noImplicitAny": false,
"noImplicitUseStrict": true,
"experimentalDecorators": true,
"diagnostics": true
"diagnostics": true,
"sourceMap": true
},
"exclude": [
"node_modules",
Expand Down
16 changes: 4 additions & 12 deletions tns-core-modules/file-system/file-system-access.ios.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,14 @@ import * as utilsModule from "utils/utils";

// TODO: Implement all the APIs receiving callback using async blocks
// TODO: Check whether we need try/catch blocks for the iOS implementation

export class FileSystemAccess {
//private keyFileType = "NSFileType";
//private keyReadonly = "NSFileImmutable";
//private NSUTF8StringEncoding = 4;
private keyModificationTime = "NSFileModificationDate";
private documentDir = 9;
private cachesDir = 13;
private userDomain = 1;

public getLastModified(path: string): Date {
var fileManager = NSFileManager.defaultManager();
var attributes = fileManager.attributesOfItemAtPathError(path);

if (attributes) {
return attributes.objectForKey(this.keyModificationTime);
return attributes.objectForKey("NSFileModificationDate");
} else {
return new Date();
}
Expand Down Expand Up @@ -226,11 +218,11 @@ export class FileSystemAccess {
}

public getDocumentsFolderPath(): string {
return this.getKnownPath(this.documentDir);
return this.getKnownPath(NSSearchPathDirectory.NSDocumentDirectory);
}

public getTempFolderPath(): string {
return this.getKnownPath(this.cachesDir);
return this.getKnownPath(NSSearchPathDirectory.NSCachesDirectory);
}

public getCurrentAppPath(): string {
Expand Down Expand Up @@ -307,7 +299,7 @@ export class FileSystemAccess {

private getKnownPath(folderType: number): string {
var fileManager = NSFileManager.defaultManager();
var paths = fileManager.URLsForDirectoryInDomains(folderType, this.userDomain);
var paths = fileManager.URLsForDirectoryInDomains(folderType, NSSearchPathDirectory.NSApplicationDirectory);

var url = paths.objectAtIndex(0);
return url.path;
Expand Down
45 changes: 45 additions & 0 deletions tns-core-modules/file-system/file-system.d.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,51 @@ declare module "file-system" {
* iOS - this folder is read-only and contains the app and all its resources.
*/
export function currentApp(): Folder;

/**
* Contains iOS-specific known folders.
*/
module ios {
/**
* Gets the NSLibraryDirectory.
*/
export function library(): Folder;

/**
* Gets the NSDeveloperDirectory.
*/
export function developer(): Folder;

/**
* Gets the NSDesktopDirectory.
*/
export function desktop(): Folder;

/**
* Gets the NSDownloadsDirectory.
*/
export function downloads(): Folder;

/**
* Gets the NSMoviesDirectory.
*/
export function movies(): Folder;

/**
* Gets the NSMusicDirectory.
*/
export function music(): Folder;

/**
* Gets the NSPicturesDirectory.
*/
export function pictures(): Folder;

/**
* Gets the NSSharedPublicDirectory.
*/
export function sharedPublic(): Folder;
}
}

/**
Expand Down
121 changes: 121 additions & 0 deletions tns-core-modules/file-system/file-system.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import file_access_module = require("file-system/file-system-access");
import * as platformModule from "platform";

// The FileSystemAccess implementation, used through all the APIs.
var fileAccess;
Expand All @@ -10,6 +11,13 @@ var getFileAccess = function (): file_access_module.FileSystemAccess {
return fileAccess;
};

let platform: typeof platformModule;
function ensurePlatform() {
if (!platform) {
platform = require("platform");
}
}

// we are defining these as private variables within the IO scope and will use them to access the corresponding properties for each FSEntity instance.
// this allows us to encapsulate (hide) the explicit property setters and force the users go through the exposed APIs to receive FSEntity instances.
var nameProperty = "_name";
Expand Down Expand Up @@ -491,6 +499,119 @@ export module knownFolders {

return _app;
};

export module ios {
function _checkPlatform(knownFolderName: string){
ensurePlatform();
if (!platform.isIOS){
throw new Error(`The "${knownFolderName}" known folder is available on iOS only!`);
}
}

let _library: Folder;
export var library = function(): Folder {
_checkPlatform("library");
if (!_library) {
var path = (<any>getFileAccess()).getKnownPath(NSSearchPathDirectory.NSLibraryDirectory);
_library = Folder.fromPath(path);
_library[pathProperty] = path;
_library[isKnownProperty] = true;
}

return _library;
};

let _developer: Folder;
export var developer = function(): Folder {
_checkPlatform("developer");
if (!_developer) {
var path = (<any>getFileAccess()).getKnownPath(NSSearchPathDirectory.NSDeveloperDirectory);
_developer = Folder.fromPath(path);
_developer[pathProperty] = path;
_developer[isKnownProperty] = true;
}

return _developer;
};

let _desktop: Folder;
export var desktop = function(): Folder {
_checkPlatform("desktop");
if (!_desktop) {
var path = (<any>getFileAccess()).getKnownPath(NSSearchPathDirectory.NSDesktopDirectory);
_desktop = Folder.fromPath(path);
_desktop[pathProperty] = path;
_desktop[isKnownProperty] = true;
}

return _desktop;
};

let _downloads: Folder;
export var downloads = function(): Folder {
_checkPlatform("downloads");
if (!_downloads) {
var path = (<any>getFileAccess()).getKnownPath(NSSearchPathDirectory.NSDownloadsDirectory);
_downloads = Folder.fromPath(path);
_downloads[pathProperty] = path;
_downloads[isKnownProperty] = true;
}

return _downloads;
};

let _movies: Folder;
export var movies = function(): Folder {
_checkPlatform("movies");
if (!_movies) {
var path = (<any>getFileAccess()).getKnownPath(NSSearchPathDirectory.NSMoviesDirectory);
_movies = Folder.fromPath(path);
_movies[pathProperty] = path;
_movies[isKnownProperty] = true;
}

return _movies;
};

let _music: Folder;
export var music = function(): Folder {
_checkPlatform("music");
if (!_music) {
var path = (<any>getFileAccess()).getKnownPath(NSSearchPathDirectory.NSMusicDirectory);
_music = Folder.fromPath(path);
_music[pathProperty] = path;
_music[isKnownProperty] = true;
}

return _music;
};

let _pictures: Folder;
export var pictures = function(): Folder {
_checkPlatform("pictures");
if (!_pictures) {
var path = (<any>getFileAccess()).getKnownPath(NSSearchPathDirectory.NSPicturesDirectory);
_pictures = Folder.fromPath(path);
_pictures[pathProperty] = path;
_pictures[isKnownProperty] = true;
}

return _pictures;
};

let _sharedPublic: Folder;
export var sharedPublic = function(): Folder {
_checkPlatform("sharedPublic");
if (!_sharedPublic) {
var path = (<any>getFileAccess()).getKnownPath(NSSearchPathDirectory.NSSharedPublicDirectory);
_sharedPublic = Folder.fromPath(path);
_sharedPublic[pathProperty] = path;
_sharedPublic[isKnownProperty] = true;
}

return _sharedPublic;
};
}
}

export module path {
Expand Down
3 changes: 2 additions & 1 deletion tsconfig.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"noImplicitAny": false,
"noImplicitUseStrict": true,
"experimentalDecorators": true,
"diagnostics": true
"diagnostics": true,
"sourceMap": true
},
"exclude": [
"node_modules",
Expand Down

Back | FazBrowse Home | New Git URL