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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 0 additions & 39 deletions .github/workflows/format.yml

This file was deleted.

12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Change Log

## 26.0.0

* Breaking: `Execution.functionId` replaced by `resourceId` and `resourceType`, now that executions cover both functions and sites
* Added: `avatars.getPhoto` returning the user's best available profile photo
* Added: `huggingface` OAuth provider
* Added: `custom` authentication factor
* Added: `ExecutionResourceType` enum and `resourceType` attribute on the `Execution` model
* Fixed: OAuth2 failures now surface the error returned in the callback URL
* Fixed: empty JSON error responses no longer throw `FormatException`
* Updated: relaxed `device_info_plus` to `<14.0.0` and `package_info_plus` to `<11.0.0`
* Updated: minimum Dart SDK is now 3.7.0 and minimum Flutter 3.29.0

## 25.4.0

* Added: `Organization` service for managing app installations
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Add this to your package's `pubspec.yaml` file:

```yml
dependencies:
appwrite: ^25.4.0
appwrite: ^26.0.0
```

You can install packages from the command line:
Expand Down
5 changes: 4 additions & 1 deletion analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
include: package:flutter_lints/flutter.yaml
include: package:flutter_lints/flutter.yaml

formatter:
trailing_commas: preserve
25 changes: 14 additions & 11 deletions docs/examples/avatars/get-browser.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
```dart
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/enums.dart' as enums;

Expand All @@ -14,23 +17,23 @@ Uint8List bytes = await avatars.getBrowser(
width: 0, // optional
height: 0, // optional
quality: -1, // optional
)
);

final file = File('path_to_file/filename.ext');
file.writeAsBytesSync(bytes);

// Displaying image preview
FutureBuilder(
FutureBuilder<Uint8List>(
future: avatars.getBrowser(
code: enums.Browser.avantBrowser,
width:0 , // optional
height:0 , // optional
quality:-1 , // optional
), // Works for both public file and private file, for private files you need to be logged in
code: enums.Browser.avantBrowser,
width: 0, // optional
height: 0, // optional
quality: -1, // optional
), // Works for both public file and private file, for private files you need to be logged in
builder: (context, snapshot) {
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data)
: CircularProgressIndicator();
}
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data!)
: const CircularProgressIndicator();
},
);
```
25 changes: 14 additions & 11 deletions docs/examples/avatars/get-credit-card.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
```dart
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/enums.dart' as enums;

Expand All @@ -14,23 +17,23 @@ Uint8List bytes = await avatars.getCreditCard(
width: 0, // optional
height: 0, // optional
quality: -1, // optional
)
);

final file = File('path_to_file/filename.ext');
file.writeAsBytesSync(bytes);

// Displaying image preview
FutureBuilder(
FutureBuilder<Uint8List>(
future: avatars.getCreditCard(
code: enums.CreditCard.americanExpress,
width:0 , // optional
height:0 , // optional
quality:-1 , // optional
), // Works for both public file and private file, for private files you need to be logged in
code: enums.CreditCard.americanExpress,
width: 0, // optional
height: 0, // optional
quality: -1, // optional
), // Works for both public file and private file, for private files you need to be logged in
builder: (context, snapshot) {
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data)
: CircularProgressIndicator();
}
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data!)
: const CircularProgressIndicator();
},
);
```
19 changes: 11 additions & 8 deletions docs/examples/avatars/get-favicon.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
```dart
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:appwrite/appwrite.dart';

Client client = Client()
Expand All @@ -10,20 +13,20 @@ Avatars avatars = Avatars(client);
// Downloading file
Uint8List bytes = await avatars.getFavicon(
url: 'https://example.com',
)
);

final file = File('path_to_file/filename.ext');
file.writeAsBytesSync(bytes);

// Displaying image preview
FutureBuilder(
FutureBuilder<Uint8List>(
future: avatars.getFavicon(
url:'https://example.com' ,
), // Works for both public file and private file, for private files you need to be logged in
url: 'https://example.com',
), // Works for both public file and private file, for private files you need to be logged in
builder: (context, snapshot) {
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data)
: CircularProgressIndicator();
}
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data!)
: const CircularProgressIndicator();
},
);
```
25 changes: 14 additions & 11 deletions docs/examples/avatars/get-flag.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
```dart
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/enums.dart' as enums;

Expand All @@ -14,23 +17,23 @@ Uint8List bytes = await avatars.getFlag(
width: 0, // optional
height: 0, // optional
quality: -1, // optional
)
);

final file = File('path_to_file/filename.ext');
file.writeAsBytesSync(bytes);

// Displaying image preview
FutureBuilder(
FutureBuilder<Uint8List>(
future: avatars.getFlag(
code: enums.Flag.afghanistan,
width:0 , // optional
height:0 , // optional
quality:-1 , // optional
), // Works for both public file and private file, for private files you need to be logged in
code: enums.Flag.afghanistan,
width: 0, // optional
height: 0, // optional
quality: -1, // optional
), // Works for both public file and private file, for private files you need to be logged in
builder: (context, snapshot) {
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data)
: CircularProgressIndicator();
}
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data!)
: const CircularProgressIndicator();
},
);
```
23 changes: 13 additions & 10 deletions docs/examples/avatars/get-image.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
```dart
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:appwrite/appwrite.dart';

Client client = Client()
Expand All @@ -12,22 +15,22 @@ Uint8List bytes = await avatars.getImage(
url: 'https://example.com',
width: 0, // optional
height: 0, // optional
)
);

final file = File('path_to_file/filename.ext');
file.writeAsBytesSync(bytes);

// Displaying image preview
FutureBuilder(
FutureBuilder<Uint8List>(
future: avatars.getImage(
url:'https://example.com' ,
width:0 , // optional
height:0 , // optional
), // Works for both public file and private file, for private files you need to be logged in
url: 'https://example.com',
width: 0, // optional
height: 0, // optional
), // Works for both public file and private file, for private files you need to be logged in
builder: (context, snapshot) {
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data)
: CircularProgressIndicator();
}
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data!)
: const CircularProgressIndicator();
},
);
```
25 changes: 14 additions & 11 deletions docs/examples/avatars/get-initials.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
```dart
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:appwrite/appwrite.dart';

Client client = Client()
Expand All @@ -13,23 +16,23 @@ Uint8List bytes = await avatars.getInitials(
width: 0, // optional
height: 0, // optional
background: '', // optional
)
);

final file = File('path_to_file/filename.ext');
file.writeAsBytesSync(bytes);

// Displaying image preview
FutureBuilder(
FutureBuilder<Uint8List>(
future: avatars.getInitials(
name:'<NAME>' , // optional
width:0 , // optional
height:0 , // optional
background:'' , // optional
), // Works for both public file and private file, for private files you need to be logged in
name: '<NAME>', // optional
width: 0, // optional
height: 0, // optional
background: '', // optional
), // Works for both public file and private file, for private files you need to be logged in
builder: (context, snapshot) {
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data)
: CircularProgressIndicator();
}
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data!)
: const CircularProgressIndicator();
},
);
```
40 changes: 40 additions & 0 deletions docs/examples/avatars/get-photo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
```dart
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:appwrite/appwrite.dart';

Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID

Avatars avatars = Avatars(client);

// Downloading file
Uint8List bytes = await avatars.getPhoto(
width: 0, // optional
height: 0, // optional
quality: 0, // optional
output: 'png', // optional
rating: 'g', // optional
);

final file = File('path_to_file/filename.ext');
file.writeAsBytesSync(bytes);

// Displaying image preview
FutureBuilder<Uint8List>(
future: avatars.getPhoto(
width: 0, // optional
height: 0, // optional
quality: 0, // optional
output: 'png', // optional
rating: 'g', // optional
), // Works for both public file and private file, for private files you need to be logged in
builder: (context, snapshot) {
return snapshot.hasData && snapshot.data != null
? Image.memory(snapshot.data!)
: const CircularProgressIndicator();
},
);
```
Loading