scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
75 lines (64 loc) • 1.43 kB
text/typescript
import {AbsShareSheet} from 'scriptable-abstract';
interface ShareSheetResult {
completed: boolean;
activity_type: string;
}
interface ShareSheetState {
lastSharedItems: any[];
lastResult: ShareSheetResult | null;
}
/**
* Mock implementation of Scriptable's ShareSheet global variable
* Provides functionality for sharing content with other apps
*
* @implements ShareSheet
*/
export class MockShareSheet extends AbsShareSheet<ShareSheetState> {
static get instance(): MockShareSheet {
return super.instance as MockShareSheet;
}
constructor() {
super({
lastSharedItems: [],
lastResult: null,
});
}
/**
* @inheritdoc
*/
async present(activityItems: readonly any[]): Promise<ShareSheetResult> {
const result = {
completed: true,
activity_type: 'com.apple.UIKit.activity.CopyToPasteboard',
};
this.setState({
lastSharedItems: [...activityItems],
lastResult: result,
});
return result;
}
/**
* @additional
* Get the last shared items
*/
getLastSharedItems(): any[] {
return this.state.lastSharedItems;
}
/**
* @additional
* Get the last result
*/
getLastResult(): ShareSheetResult | null {
return this.state.lastResult;
}
/**
* @additional
* Clear sharing history
*/
clear(): void {
this.setState({
lastSharedItems: [],
lastResult: null,
});
}
}