Feature/logging (#251)
* Add logging package * Refresh linux files * Android flavor setup * Setup ios flavors * Setup release CI * Refactor CI * Remove debug prints * Create prod signingConfig only if exists * Store recent logs * Remove flavoring on desktop * Fix android signing * Fix release paths (except windows) * Quote secret var * debug * Fix env vars * Add log console * Add logs section in bug issue template * Add time to logs * Add changelog entry * Rename log console * Remove key * Change way of routing * Add title
This commit is contained in:
parent
6a7b999436
commit
9f9cc52cf5
|
@ -24,6 +24,14 @@ A clear and concise description of what the bug is.
|
|||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
### Relevant logs
|
||||
|
||||
<details>
|
||||
<summary>Logs</summary>
|
||||
|
||||
Paste your logs here. Logs can be found in lemmur: settings > about lemmur > logs.
|
||||
</details>
|
||||
|
||||
### Expected behavior
|
||||
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
|
|
@ -7,16 +7,12 @@ on:
|
|||
branches: [master]
|
||||
|
||||
jobs:
|
||||
android:
|
||||
name: Android
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: "12.x"
|
||||
|
||||
- uses: subosito/flutter-action@v1
|
||||
with:
|
||||
channel: "stable"
|
||||
|
@ -33,12 +29,51 @@ jobs:
|
|||
- name: Run tests
|
||||
run: flutter test
|
||||
|
||||
android:
|
||||
name: Android
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: "12.x"
|
||||
|
||||
- uses: subosito/flutter-action@v1
|
||||
with:
|
||||
channel: "stable"
|
||||
|
||||
- name: Inject keystore
|
||||
working-directory: android/app
|
||||
run: |
|
||||
echo "${{ secrets.SIGNING_KEY }}" | base64 -d | tee key.jks >/dev/null
|
||||
|
||||
- name: Android build
|
||||
run: flutter build apk --split-per-abi
|
||||
env:
|
||||
ANDROID_KEY_ALIAS: ${{ secrets.ALIAS }}
|
||||
ANDROID_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
ANDROID_STORE_PATH: key.jks
|
||||
ANDROID_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
run: flutter build apk --split-per-abi --release --target lib/main_prod.dart --flavor prod
|
||||
|
||||
ios:
|
||||
name: iOS
|
||||
runs-on: macos-latest
|
||||
needs: lint
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- uses: subosito/flutter-action@v1
|
||||
with:
|
||||
channel: "stable"
|
||||
|
||||
- run: flutter build ios --no-codesign --release --target lib/main_prod.dart --flavor prod
|
||||
|
||||
linux:
|
||||
name: Linux
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
|
@ -57,11 +92,12 @@ jobs:
|
|||
|
||||
- name: Build
|
||||
run: |
|
||||
flutter build linux
|
||||
flutter build linux --release --target lib/main_prod.dart
|
||||
|
||||
windows:
|
||||
name: Windows
|
||||
runs-on: windows-latest
|
||||
needs: lint
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
|
@ -75,4 +111,4 @@ jobs:
|
|||
|
||||
- name: Build
|
||||
run: |
|
||||
flutter build windows
|
||||
flutter build windows --release --target lib/main_prod.dart
|
||||
|
|
|
@ -37,36 +37,36 @@ jobs:
|
|||
run: flutter pub get
|
||||
|
||||
- name: Inject keystore
|
||||
working-directory: android
|
||||
env:
|
||||
KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
ALIAS: ${{ secrets.ALIAS }}
|
||||
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
|
||||
working-directory: android/app
|
||||
run: |
|
||||
echo storePassword=$KEY_STORE_PASSWORD > key.properties
|
||||
echo keyPassword=$KEY_PASSWORD >> key.properties
|
||||
echo keyAlias=$ALIAS >> key.properties
|
||||
echo storeFile=$HOME/key.jks >> key.properties
|
||||
|
||||
echo $SIGNING_KEY | base64 -d | tee ~/key.jks >/dev/null
|
||||
echo "${{ secrets.SIGNING_KEY }}" | base64 -d | tee key.jks >/dev/null
|
||||
|
||||
- name: Generate appbundle
|
||||
run: flutter build appbundle
|
||||
env:
|
||||
ANDROID_KEY_ALIAS: ${{ secrets.ALIAS }}
|
||||
ANDROID_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
ANDROID_STORE_PATH: key.jks
|
||||
ANDROID_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
run: flutter build appbundle --release --target lib/main_prod.dart --flavor prod
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: android-appbundle
|
||||
path: |
|
||||
build/app/outputs/bundle/release/app-release.aab
|
||||
build/app/outputs/bundle/prodRelease/app-prod-release.aab
|
||||
|
||||
- name: Android build
|
||||
run: |
|
||||
flutter build apk --split-per-abi
|
||||
env:
|
||||
ANDROID_KEY_ALIAS: ${{ secrets.ALIAS }}
|
||||
ANDROID_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
ANDROID_STORE_PATH: key.jks
|
||||
ANDROID_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
run:
|
||||
flutter build apk --split-per-abi --release --target lib/main_prod.dart --flavor prod
|
||||
|
||||
mv build/app/outputs/flutter-apk/app-arm64-v8a-release.apk lemmur-${{ needs.get-vars.outputs.tag }}-arm64-v8a-android.apk
|
||||
mv build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk lemmur-${{ needs.get-vars.outputs.tag }}-armeabi-v7a-android.apk
|
||||
mv build/app/outputs/flutter-apk/app-x86_64-release.apk lemmur-${{ needs.get-vars.outputs.tag }}-x86_64-android.apk
|
||||
mv build/app/outputs/flutter-apk/app-arm64-v8a-prod-release.apk lemmur-${{ needs.get-vars.outputs.tag }}-arm64-v8a-android.apk
|
||||
mv build/app/outputs/flutter-apk/app-armeabi-v7a-prod-release.apk lemmur-${{ needs.get-vars.outputs.tag }}-armeabi-v7a-android.apk
|
||||
mv build/app/outputs/flutter-apk/app-x86_64-prod-release.apk lemmur-${{ needs.get-vars.outputs.tag }}-x86_64-android.apk
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
|
@ -96,17 +96,17 @@ jobs:
|
|||
|
||||
- name: Build
|
||||
run: |
|
||||
flutter build linux
|
||||
flutter build linux --release --target lib/main_prod.dart
|
||||
|
||||
- name: Archive
|
||||
working-directory: build/linux/release/bundle
|
||||
working-directory: build/linux/x64/release/bundle
|
||||
run: |
|
||||
tar -czf lemmur-${{ needs.get-vars.outputs.tag }}-x86_64-linux.tar.gz *
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: linux-build
|
||||
path: build/linux/release/bundle/lemmur-*.tar.gz
|
||||
path: build/linux/x64/release/bundle/lemmur-*.tar.gz
|
||||
|
||||
windows-build:
|
||||
name: Windows build
|
||||
|
@ -125,7 +125,7 @@ jobs:
|
|||
|
||||
- name: Build
|
||||
run: |
|
||||
flutter build windows
|
||||
flutter build windows --release --target lib/main_prod.dart
|
||||
|
||||
- name: Archive
|
||||
working-directory: build/windows/runner/Release
|
||||
|
|
|
@ -36,3 +36,6 @@ app.*.map.json
|
|||
|
||||
# Exceptions to above rules.
|
||||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||
|
||||
# Xcode build files
|
||||
ios/build
|
||||
|
|
|
@ -4,19 +4,25 @@
|
|||
{
|
||||
"name": "Debug",
|
||||
"request": "launch",
|
||||
"type": "dart"
|
||||
"type": "dart",
|
||||
"program": "lib/main_dev.dart",
|
||||
"args": ["--flavor", "dev"]
|
||||
},
|
||||
{
|
||||
"name": "Profile",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"flutterMode": "profile"
|
||||
"flutterMode": "profile",
|
||||
"program": "lib/main_dev.dart",
|
||||
"args": ["--flavor", "dev"]
|
||||
},
|
||||
{
|
||||
"name": "Release",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"flutterMode": "release"
|
||||
"flutterMode": "release",
|
||||
"program": "lib/main_dev.dart",
|
||||
"args": ["--flavor", "dev"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -29,5 +29,20 @@
|
|||
"L10n string": {
|
||||
"prefix": "l10n",
|
||||
"body": ["L10n.of(context)!.$0"]
|
||||
},
|
||||
"Mobx store": {
|
||||
"prefix": "mobxstore",
|
||||
"body": [
|
||||
"import 'package:mobx/mobx.dart';",
|
||||
"",
|
||||
"part '$TM_FILENAME_BASE.g.dart';",
|
||||
"",
|
||||
"class ${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g} = _${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g} with _$${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g};",
|
||||
"",
|
||||
"abstract class _${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g} with Store {",
|
||||
"\t@observable",
|
||||
"\t$0",
|
||||
"}"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
## Unreleased
|
||||
|
||||
### Added
|
||||
|
||||
- Logging: local logs about some actions/errors. Can be accessed from **settings > about lemmur > logs**
|
||||
|
||||
## v0.6.0 - 2021-09-06
|
||||
|
||||
### Added
|
||||
|
|
|
@ -8,6 +8,7 @@ linter:
|
|||
- avoid_init_to_null
|
||||
- avoid_null_checks_in_equality_operators
|
||||
- avoid_positional_boolean_parameters
|
||||
- avoid_print
|
||||
- avoid_private_typedef_functions
|
||||
- avoid_redundant_argument_values
|
||||
- avoid_relative_lib_imports
|
||||
|
|
|
@ -25,12 +25,6 @@ apply plugin: 'com.android.application'
|
|||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
def keystoreProperties = new Properties()
|
||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 30
|
||||
|
||||
|
@ -51,21 +45,55 @@ android {
|
|||
}
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
keyAlias keystoreProperties['keyAlias']
|
||||
keyPassword keystoreProperties['keyPassword']
|
||||
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
|
||||
storePassword keystoreProperties['storePassword']
|
||||
dev { }
|
||||
|
||||
if (System.getenv("ANDROID_STORE_PATH")) {
|
||||
prod {
|
||||
keyAlias System.getenv("ANDROID_KEY_ALIAS")
|
||||
keyPassword System.getenv("ANDROID_KEY_PASSWORD")
|
||||
storeFile file(System.getenv("ANDROID_STORE_PATH"))
|
||||
storePassword System.getenv("ANDROID_STORE_PASSWORD")
|
||||
}
|
||||
} else {
|
||||
prod { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flavorDimensions "app"
|
||||
|
||||
productFlavors {
|
||||
dev {
|
||||
dimension "app"
|
||||
applicationIdSuffix ".dev"
|
||||
versionNameSuffix "-dev"
|
||||
manifestPlaceholders = [
|
||||
appName: "lemmur DEV"
|
||||
]
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
|
||||
prod {
|
||||
dimension "app"
|
||||
manifestPlaceholders = [
|
||||
appName: "lemmur"
|
||||
]
|
||||
signingConfig signingConfigs.prod
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
testCoverageEnabled true
|
||||
debuggable true
|
||||
minifyEnabled false
|
||||
signingConfig null
|
||||
}
|
||||
|
||||
release {
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
signingConfig signingConfigs.release
|
||||
} else {
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
debuggable false
|
||||
minifyEnabled true
|
||||
shrinkResources false
|
||||
zipAlignEnabled true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
<application
|
||||
android:name="io.flutter.app.FlutterApplication"
|
||||
android:label="lemmur"
|
||||
android:label="${appName}"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objectVersion = 51;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
|
@ -33,10 +33,13 @@
|
|||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||
20AF123CE6B282DF5FCC0E08 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
3064BA8287AEF7F9E6523E2E /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = "<group>"; };
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||
4E5591CE3BD9F89AE791097F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5D359FC3B8BF643CBF087D7C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
||||
5DC9EF56CF79F18EC6F8E97B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
||||
5F74EE2F2B11182F6DF33F2E /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = "<group>"; };
|
||||
61F7B8503D323D03015ED0C2 /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = "<group>"; };
|
||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||
|
@ -47,6 +50,8 @@
|
|||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
BAF12CFD300959413D4373DD /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = "<group>"; };
|
||||
C282F331F7E23515AB5C91ED /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -67,6 +72,11 @@
|
|||
20AF123CE6B282DF5FCC0E08 /* Pods-Runner.debug.xcconfig */,
|
||||
5D359FC3B8BF643CBF087D7C /* Pods-Runner.release.xcconfig */,
|
||||
5DC9EF56CF79F18EC6F8E97B /* Pods-Runner.profile.xcconfig */,
|
||||
C282F331F7E23515AB5C91ED /* Pods-Runner.debug-dev.xcconfig */,
|
||||
3064BA8287AEF7F9E6523E2E /* Pods-Runner.debug-prod.xcconfig */,
|
||||
BAF12CFD300959413D4373DD /* Pods-Runner.release-dev.xcconfig */,
|
||||
5F74EE2F2B11182F6DF33F2E /* Pods-Runner.release-prod.xcconfig */,
|
||||
61F7B8503D323D03015ED0C2 /* Pods-Runner.profile-dev.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
|
@ -163,7 +173,7 @@
|
|||
97C146E61CF9000F007C117D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1020;
|
||||
LastUpgradeCheck = 1250;
|
||||
ORGANIZATIONNAME = "";
|
||||
TargetAttributes = {
|
||||
97C146ED1CF9000F007C117D = {
|
||||
|
@ -306,87 +316,7 @@
|
|||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
249021D3217E4FDB00AE95B9 /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Profile;
|
||||
};
|
||||
249021D4217E4FDB00AE95B9 /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = NMDSW6KGG7;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.krawieck.lemmur;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Profile;
|
||||
};
|
||||
97C147031CF9000F007C117D /* Debug */ = {
|
||||
1889477126E7F08600887334 /* Debug-prod */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
|
@ -433,15 +363,47 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
name = "Debug-prod";
|
||||
};
|
||||
97C147041CF9000F007C117D /* Release */ = {
|
||||
1889477226E7F08600887334 /* Debug-prod */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
BUNDLE_NAME = lemmur;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = NMDSW6KGG7;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.krawieck.lemmur;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "Debug-prod";
|
||||
};
|
||||
1889477326E7F09600887334 /* Release-prod */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
|
@ -482,7 +444,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
|
@ -491,13 +453,14 @@
|
|||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
name = "Release-prod";
|
||||
};
|
||||
97C147061CF9000F007C117D /* Debug */ = {
|
||||
1889477426E7F09600887334 /* Release-prod */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
BUNDLE_NAME = lemmur;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = NMDSW6KGG7;
|
||||
|
@ -518,17 +481,237 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = com.krawieck.lemmur;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "Release-prod";
|
||||
};
|
||||
249021D3217E4FDB00AE95B9 /* Profile-dev */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = "Profile-dev";
|
||||
};
|
||||
249021D4217E4FDB00AE95B9 /* Profile-dev */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
BUNDLE_NAME = "lemmur DEV";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = NMDSW6KGG7;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.krawieck.lemmur.dev;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "Profile-dev";
|
||||
};
|
||||
97C147031CF9000F007C117D /* Debug-dev */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = "Debug-dev";
|
||||
};
|
||||
97C147041CF9000F007C117D /* Release-dev */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = "Release-dev";
|
||||
};
|
||||
97C147061CF9000F007C117D /* Debug-dev */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
BUNDLE_NAME = "lemmur DEV";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = NMDSW6KGG7;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.krawieck.lemmur.dev;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
name = "Debug-dev";
|
||||
};
|
||||
97C147071CF9000F007C117D /* Release */ = {
|
||||
97C147071CF9000F007C117D /* Release-dev */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
BUNDLE_NAME = "lemmur DEV";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = NMDSW6KGG7;
|
||||
|
@ -546,13 +729,13 @@
|
|||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.krawieck.lemmur;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.krawieck.lemmur.dev;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
name = "Release-dev";
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
|
@ -560,22 +743,26 @@
|
|||
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
97C147031CF9000F007C117D /* Debug */,
|
||||
97C147041CF9000F007C117D /* Release */,
|
||||
249021D3217E4FDB00AE95B9 /* Profile */,
|
||||
97C147031CF9000F007C117D /* Debug-dev */,
|
||||
1889477126E7F08600887334 /* Debug-prod */,
|
||||
97C147041CF9000F007C117D /* Release-dev */,
|
||||
1889477326E7F09600887334 /* Release-prod */,
|
||||
249021D3217E4FDB00AE95B9 /* Profile-dev */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
defaultConfigurationName = "Release-dev";
|
||||
};
|
||||
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
97C147061CF9000F007C117D /* Debug */,
|
||||
97C147071CF9000F007C117D /* Release */,
|
||||
249021D4217E4FDB00AE95B9 /* Profile */,
|
||||
97C147061CF9000F007C117D /* Debug-dev */,
|
||||
1889477226E7F08600887334 /* Debug-prod */,
|
||||
97C147071CF9000F007C117D /* Release-dev */,
|
||||
1889477426E7F09600887334 /* Release-prod */,
|
||||
249021D4217E4FDB00AE95B9 /* Profile-dev */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
defaultConfigurationName = "Release-dev";
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1250"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug-dev"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug-dev"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release-dev"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug-dev">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release-dev"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1020"
|
||||
LastUpgradeVersion = "1250"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
@ -23,7 +23,7 @@
|
|||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
buildConfiguration = "Debug-prod"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
|
@ -40,7 +40,7 @@
|
|||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
buildConfiguration = "Debug-prod"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
|
@ -61,7 +61,7 @@
|
|||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Profile"
|
||||
buildConfiguration = "Release-prod"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
|
@ -78,10 +78,10 @@
|
|||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
buildConfiguration = "Debug-prod">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
buildConfiguration = "Release-prod"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
|
@ -1,53 +1,55 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>lemmur</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(BUNDLE_NAME)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>$(BUNDLE_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
|
||||
<!-- Image picker -->
|
||||
<key>NSPhotoLibraryUsageDescription</key>
|
||||
<string>For uploading images for posts/avatars</string>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>For uploading images for posts/avatars</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>For recording videos for posts</string>
|
||||
</dict>
|
||||
<!-- Image picker -->
|
||||
<key>NSPhotoLibraryUsageDescription</key>
|
||||
<string>For uploading images for posts/avatars</string>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>For uploading images for posts/avatars</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>For recording videos for posts</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:keyboard_dismisser/keyboard_dismisser.dart';
|
||||
|
||||
import 'hooks/stores.dart';
|
||||
import 'l10n/l10n.dart';
|
||||
import 'pages/home_page.dart';
|
||||
import 'theme.dart';
|
||||
|
||||
class MyApp extends HookWidget {
|
||||
const MyApp();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final configStore = useConfigStore();
|
||||
|
||||
return KeyboardDismisser(
|
||||
child: MaterialApp(
|
||||
title: 'lemmur',
|
||||
supportedLocales: L10n.supportedLocales,
|
||||
localizationsDelegates: L10n.localizationsDelegates,
|
||||
themeMode: configStore.theme,
|
||||
darkTheme: configStore.amoledDarkMode ? amoledTheme : darkTheme,
|
||||
locale: configStore.locale,
|
||||
theme: lightTheme,
|
||||
home: const HomePage(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
class AppConfig {
|
||||
final bool debugMode;
|
||||
|
||||
const AppConfig({
|
||||
required this.debugMode,
|
||||
});
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'app.dart';
|
||||
import 'app_config.dart';
|
||||
import 'pages/log_console_page/log_console_page_store.dart';
|
||||
import 'stores/accounts_store.dart';
|
||||
import 'stores/config_store.dart';
|
||||
|
||||
Future<void> mainCommon(AppConfig appConfig) async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
final logConsoleStore = LogConsolePageStore();
|
||||
|
||||
_setupLogger(appConfig, logConsoleStore);
|
||||
|
||||
final configStore = await ConfigStore.load();
|
||||
final accountsStore = await AccountsStore.load();
|
||||
|
||||
runApp(
|
||||
MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider.value(value: configStore),
|
||||
ChangeNotifierProvider.value(value: accountsStore),
|
||||
Provider.value(value: logConsoleStore),
|
||||
],
|
||||
child: const MyApp(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _setupLogger(AppConfig appConfig, LogConsolePageStore logConsoleStore) {
|
||||
Logger.root.level = Level.ALL;
|
||||
|
||||
Logger.root.onRecord.listen((logRecord) {
|
||||
// ignore: avoid_print
|
||||
print(logRecord);
|
||||
logConsoleStore.addLog(logRecord);
|
||||
});
|
||||
|
||||
final flutterErrorLogger = Logger('FlutterError');
|
||||
|
||||
FlutterError.onError = (details) {
|
||||
if (appConfig.debugMode) {
|
||||
FlutterError.dumpErrorToConsole(details);
|
||||
} else {
|
||||
flutterErrorLogger.warning(
|
||||
details.summary.name,
|
||||
details.exception,
|
||||
details.stack,
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
import 'app_config.dart';
|
||||
import 'main_common.dart';
|
||||
|
||||
void main() {
|
||||
mainCommon(const AppConfig(debugMode: true));
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
import 'app_config.dart';
|
||||
import 'main_common.dart';
|
||||
|
||||
void main() {
|
||||
mainCommon(const AppConfig(debugMode: false));
|
||||
}
|
|
@ -1,64 +1,16 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:keyboard_dismisser/keyboard_dismisser.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'hooks/stores.dart';
|
||||
import 'l10n/l10n.dart';
|
||||
import 'pages/communities_tab.dart';
|
||||
import 'pages/create_post.dart';
|
||||
import 'pages/home_tab.dart';
|
||||
import 'pages/profile_tab.dart';
|
||||
import 'pages/search_tab.dart';
|
||||
import 'stores/accounts_store.dart';
|
||||
import 'stores/config_store.dart';
|
||||
import 'theme.dart';
|
||||
import 'util/extensions/brightness.dart';
|
||||
import '../util/extensions/brightness.dart';
|
||||
import 'communities_tab.dart';
|
||||
import 'create_post.dart';
|
||||
import 'home_tab.dart';
|
||||
import 'profile_tab.dart';
|
||||
import 'search_tab.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
final configStore = await ConfigStore.load();
|
||||
final accountsStore = await AccountsStore.load();
|
||||
|
||||
runApp(
|
||||
MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider.value(value: configStore),
|
||||
ChangeNotifierProvider.value(value: accountsStore),
|
||||
],
|
||||
child: const MyApp(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
class MyApp extends HookWidget {
|
||||
const MyApp();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final configStore = useConfigStore();
|
||||
|
||||
return KeyboardDismisser(
|
||||
child: MaterialApp(
|
||||
title: 'lemmur',
|
||||
supportedLocales: L10n.supportedLocales,
|
||||
localizationsDelegates: L10n.localizationsDelegates,
|
||||
themeMode: configStore.theme,
|
||||
darkTheme: configStore.amoledDarkMode ? amoledTheme : darkTheme,
|
||||
locale: configStore.locale,
|
||||
theme: lightTheme,
|
||||
home: const MyHomePage(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class MyHomePage extends HookWidget {
|
||||
const MyHomePage();
|
||||
class HomePage extends HookWidget {
|
||||
const HomePage();
|
||||
|
||||
static const List<Widget> pages = [
|
||||
HomeTab(),
|
|
@ -0,0 +1,81 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../util/observer_consumers.dart';
|
||||
import '../../widgets/bottom_safe.dart';
|
||||
import 'log_console_page_store.dart';
|
||||
|
||||
class LogConsolePage extends StatelessWidget {
|
||||
const LogConsolePage();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Logs')),
|
||||
body: SafeArea(
|
||||
child: ObserverBuilder<LogConsolePageStore>(
|
||||
builder: (context, store) {
|
||||
final logStrings = store.stringified();
|
||||
|
||||
if (store.logs.isEmpty) {
|
||||
return const Center(
|
||||
child: Text(
|
||||
'no logs',
|
||||
style: TextStyle(fontStyle: FontStyle.italic),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return ListView.separated(
|
||||
padding: const EdgeInsets.all(8)
|
||||
.copyWith(bottom: BottomSafe.fabPadding + 8),
|
||||
itemCount: store.logs.length,
|
||||
itemBuilder: (context, i) => SelectableText(
|
||||
logStrings[i],
|
||||
style: TextStyle(color: store.logs[i].level.color),
|
||||
),
|
||||
separatorBuilder: (context, i) => const SizedBox(height: 6),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
onPressed: () async {
|
||||
final data = context.read<LogConsolePageStore>().stringified();
|
||||
|
||||
await Clipboard.setData(ClipboardData(text: data.join('\n')));
|
||||
|
||||
ScaffoldMessenger.of(context)
|
||||
..hideCurrentSnackBar()
|
||||
..showSnackBar(
|
||||
const SnackBar(content: Text('all logs copied to the clipboard')),
|
||||
);
|
||||
},
|
||||
tooltip: 'Copy to clipboard',
|
||||
child: const Icon(Icons.copy),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
static Route route() => MaterialPageRoute(
|
||||
builder: (context) => const LogConsolePage(),
|
||||
fullscreenDialog: true,
|
||||
);
|
||||
}
|
||||
|
||||
extension on Level {
|
||||
Color get color {
|
||||
if (this == Level.FINEST) return Colors.lime[100]!;
|
||||
if (this == Level.FINER) return Colors.lime[300]!;
|
||||
if (this == Level.FINE) return Colors.lime;
|
||||
if (this == Level.CONFIG) return Colors.green;
|
||||
if (this == Level.INFO) return Colors.blue;
|
||||
if (this == Level.WARNING) return Colors.amber;
|
||||
if (this == Level.SEVERE) return Colors.orange;
|
||||
if (this == Level.SHOUT) return Colors.red;
|
||||
|
||||
throw StateError('unreachable');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
import 'package:logging/logging.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
|
||||
part 'log_console_page_store.g.dart';
|
||||
|
||||
class LogConsolePageStore = _LogConsolePageStore with _$LogConsolePageStore;
|
||||
|
||||
abstract class _LogConsolePageStore with Store {
|
||||
// TODO: implement as an ObservableDeque
|
||||
final logs = ObservableList<LogRecord>();
|
||||
static const _bufferSize = 200;
|
||||
|
||||
@action
|
||||
void addLog(LogRecord logRecord) {
|
||||
if (logs.length == _bufferSize) {
|
||||
logs.removeAt(0);
|
||||
}
|
||||
|
||||
logs.add(logRecord);
|
||||
}
|
||||
|
||||
List<String> stringified() {
|
||||
return logs.map(
|
||||
(log) {
|
||||
var str = '${log.time} $log';
|
||||
|
||||
if (log.stackTrace != null) str += '\n${log.stackTrace}';
|
||||
|
||||
return str;
|
||||
},
|
||||
).toList();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'log_console_page_store.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// StoreGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
|
||||
|
||||
mixin _$LogConsolePageStore on _LogConsolePageStore, Store {
|
||||
final _$_LogConsolePageStoreActionController =
|
||||
ActionController(name: '_LogConsolePageStore');
|
||||
|
||||
@override
|
||||
void addLog(LogRecord logRecord) {
|
||||
final _$actionInfo = _$_LogConsolePageStoreActionController.startAction(
|
||||
name: '_LogConsolePageStore.addLog');
|
||||
try {
|
||||
return super.addLog(logRecord);
|
||||
} finally {
|
||||
_$_LogConsolePageStoreActionController.endAction(_$actionInfo);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '''
|
||||
|
||||
''';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'log_console_store.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// StoreGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
|
||||
|
||||
mixin _$LogConsoleStore on _LogConsoleStore, Store {
|
||||
final _$_LogConsoleStoreActionController =
|
||||
ActionController(name: '_LogConsoleStore');
|
||||
|
||||
@override
|
||||
void addLog(LogRecord logRecord) {
|
||||
final _$actionInfo = _$_LogConsoleStoreActionController.startAction(
|
||||
name: '_LogConsoleStore.addLog');
|
||||
try {
|
||||
return super.addLog(logRecord);
|
||||
} finally {
|
||||
_$_LogConsoleStoreActionController.endAction(_$actionInfo);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '''
|
||||
|
||||
''';
|
||||
}
|
||||
}
|
|
@ -63,7 +63,6 @@ Future<void> linkLauncher({
|
|||
return goToPost(context, matchedInstance, int.parse(split[2]));
|
||||
} else if (split.length == 5) {
|
||||
// TODO: post with focus on comment thread
|
||||
print('comment in post');
|
||||
return goToPost(context, matchedInstance, int.parse(split[2]));
|
||||
}
|
||||
break;
|
||||
|
@ -73,21 +72,17 @@ Future<void> linkLauncher({
|
|||
|
||||
case 'communities':
|
||||
// TODO: put here push to communities page
|
||||
print('communities');
|
||||
return;
|
||||
|
||||
case 'modlog':
|
||||
// TODO: put here push to modlog
|
||||
print('modlog');
|
||||
return;
|
||||
case 'inbox':
|
||||
// TODO: put here push to inbox
|
||||
print('inbox');
|
||||
return;
|
||||
case 'search':
|
||||
// TODO: *maybe* put here push to search. we'll see
|
||||
// how much web version differs form the app
|
||||
print('search');
|
||||
return;
|
||||
case 'create_post':
|
||||
case 'create_community':
|
||||
|
|
|
@ -6,6 +6,7 @@ import 'package:package_info_plus/package_info_plus.dart';
|
|||
|
||||
import '../gen/assets.gen.dart';
|
||||
import '../hooks/memo_future.dart';
|
||||
import '../pages/log_console_page/log_console_page.dart';
|
||||
import '../url_launcher.dart';
|
||||
import 'bottom_modal.dart';
|
||||
|
||||
|
@ -72,7 +73,14 @@ class AboutTile extends HookWidget {
|
|||
),
|
||||
),
|
||||
);
|
||||
}, // TODO: link to some donation site
|
||||
},
|
||||
),
|
||||
TextButton.icon(
|
||||
icon: const Icon(Icons.list_alt),
|
||||
label: const Text('logs'),
|
||||
onPressed: () {
|
||||
Navigator.of(context).push(LogConsolePage.route());
|
||||
},
|
||||
),
|
||||
],
|
||||
applicationIcon: ClipRRect(
|
||||
|
|
|
@ -2,9 +2,18 @@ import 'package:flutter/material.dart';
|
|||
|
||||
class BottomSafe extends StatelessWidget {
|
||||
final double additionalPadding;
|
||||
|
||||
static const fabPadding =
|
||||
// FAB size + FAB margin, 56 is as per https://material.io/components/buttons-floating-action-button#anatomy
|
||||
56 + kFloatingActionButtonMargin;
|
||||
|
||||
const BottomSafe([this.additionalPadding = 0]);
|
||||
const BottomSafe.fab() : this(fabPadding);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) => SizedBox(
|
||||
height: MediaQuery.of(context).padding.bottom + additionalPadding);
|
||||
Widget build(BuildContext context) {
|
||||
return SizedBox(
|
||||
height: MediaQuery.of(context).padding.bottom + additionalPadding,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ class CommentSection extends HookWidget {
|
|||
com,
|
||||
key: ValueKey(com),
|
||||
),
|
||||
const BottomSafe(kMinInteractiveDimension + kFloatingActionButtonMargin),
|
||||
const BottomSafe.fab(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,10 +31,10 @@ class PostListOptions extends StatelessWidget {
|
|||
),
|
||||
const Spacer(),
|
||||
if (styleButton)
|
||||
IconButton(
|
||||
icon: const Icon(Icons.view_stream),
|
||||
const IconButton(
|
||||
icon: Icon(Icons.view_stream),
|
||||
// TODO: create compact post and dropdown for selecting
|
||||
onPressed: () => print('TBD'),
|
||||
onPressed: null,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -82,7 +82,7 @@ add_custom_command(
|
|||
COMMAND ${CMAKE_COMMAND} -E env
|
||||
${FLUTTER_TOOL_ENVIRONMENT}
|
||||
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
|
||||
linux-x64 ${CMAKE_BUILD_TYPE}
|
||||
${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target(flutter_assemble DEPENDS
|
||||
|
|
|
@ -456,7 +456,7 @@ packages:
|
|||
source: hosted
|
||||
version: "0.16.0"
|
||||
logging:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: logging
|
||||
url: "https://pub.dartlang.org"
|
||||
|
|
|
@ -55,6 +55,7 @@ dependencies:
|
|||
json_annotation: ^4.1.0
|
||||
keyboard_dismisser: ^2.0.0
|
||||
freezed_annotation: ^0.14.3
|
||||
logging: ^1.0.1
|
||||
|
||||
flutter:
|
||||
sdk: flutter
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// ignore_for_file: avoid_print
|
||||
import 'dart:io';
|
||||
|
||||
void confirm(String message) {
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// ignore_for_file: avoid_print
|
||||
/// Used to create a new lemmur release. Bumps semver, build number, updates changelog, fastlane, pubspec, and finishes by adding a git tag
|
||||
import 'dart:io';
|
||||
|
||||
|
|
Loading…
Reference in New Issue