Infinite scroll and update new images

Hello everyone
Describe the bug
I am using an infinite scroll pagination on my products list.
For example this page https://www.boutique-thalassotherapie.com/categorie-produit/spa/ has 5 parts. 46 products, 12 products per page.
When scrolling, lazyload doesn't load the last part images.
To Reproduce
Steps to reproduce the behavior:

Go to https://www.boutique-thalassotherapie.com/categorie-produit/spa/
Scroll down to the bottom of the page
See the last 10 images not loaded

Expected behavior
Images shoud load.
I have read the previous ticket with https://github.com/verlok/lazyload/issues/160 with @Tabrisrp author of WPRocket (WordPress cache plugin) which I am using on this website.
WPRocket does use window.addEventListener('LazyLoad::Initialized', function (e) { and MutationObserver and lazyLoadInstance.update(); that should load images loaded with ajax, like your suggested on this ticket.
LazyLoad version

Version 11.0.6

Desktop (please complete the following information):

OS: Windows 7
Browser: Chrome
Version: 75

Screenshots

Additional context
I tried to fix the issue by manipulating the JS part with update().
 Maybe there is a better way to fix this issue.
setTimeout(function() {
lazyLoadInstance.update();
}, 500);

Thank you for your help

Hi @nicomollet
Thank you for opening this.
The solution would be to call the update() method on your instance of LazyLoad, but this needs to be called after the new DOM has been added.
You can find a demo in the demos folder called dynamic_content.html if I remember correctly. The demos are also listed in the README file, so check it out.
You can call update using MutationObserver, but I’d suggest you to do it in the JavaScript function that appends the new DOM to your page.
Additionally, I’d suggest you to consider NOT to use LazyLoad at all, since you’re already lazily loading the HTML content and the maximum number of images that are being downloaded if the user doesn’t scroll down is 12.

Let me know if you manage to solve... or if you don’t!

Thanks for your tips, I managed to adapt the code (from WP Rocket original code).
It was checking if images tags were found in the DOM, but not if the new DOM was just a single img tag.
Another difference is that I update() only after all mutations have been parsed, to execute it just once.
window.addEventListener('LazyLoad::Initialized', function (e) {
            var lazyLoadInstance = e.detail.instance;

            if (window.MutationObserver) {
                var observer = new MutationObserver(function(mutations) {
                    mutations.forEach(function(mutation) {
                        for (i = 0; i < mutation.addedNodes.length; i++) {
                            if (typeof mutation.addedNodes[i].getElementsByTagName !== 'function') {
                                return;
                            }

                           if (typeof mutation.addedNodes[i].getElementsByClassName !== 'function') {
                                return;
                            }

                            imgs = mutation.addedNodes[i].getElementsByTagName('img');
                            iframes = mutation.addedNodes[i].getElementsByTagName('iframe');
                            rocket_lazy = mutation.addedNodes[i].getElementsByClassName('rocket-lazyload');

                            if ( 0 === imgs.length && 0 === iframes.length && 0 === rocket_lazy.length ) {
                                return;
                            }

                            lazyLoadInstance.update();

                        }
                    } );
                } );

                var b      = document.getElementsByTagName("body")[0];
                var config = { childList: true, subtree: true };

                observer.observe(b, config);
            }
        }, false);

By this new code
        window.addEventListener('LazyLoad::Initialized', function (e) {
            var lazyLoadInstance = e.detail.instance;

            if (window.MutationObserver) {
                var observer = new MutationObserver(function(mutations) {

                    image_count = 0;
                    iframe_count = 0;
                    rocketlazy_count = 0;

                    // Check all mutations
                    mutations.forEach(function(mutation) {

                        // Check all added nodes of the mutations
                        for (i = 0; i < mutation.addedNodes.length; i++) {
                            if (typeof mutation.addedNodes[i].getElementsByTagName !== 'function') {
                                return;
                            }

							if (typeof mutation.addedNodes[i].getElementsByClassName !== 'function') {
							return;
							}

							images = mutation.addedNodes[i].getElementsByTagName('img');
							is_image = mutation.addedNodes[i].tagName == "IMG";

							iframes = mutation.addedNodes[i].getElementsByTagName('iframe');
							is_iframe = mutation.addedNodes[i].tagName == "IFRAME";

							rocket_lazy = mutation.addedNodes[i].getElementsByClassName('rocket-lazyload');

							image_count += images.length;
							iframe_count += iframes.length;
							rocketlazy_count += rocket_lazy.length;

							if(is_image){
								image_count += 1;
							}
							if(is_iframe){
								iframe_count += 1;
							}

                        }
                    } );

                    // After all mutations have been executed, check if any image, iframe was found in the added DOM
                    if(image_count > 0 || iframe_count > 0 || rocketlazy_count > 0){
                        lazyLoadInstance.update();
                    }

                } );

                var b      = document.getElementsByTagName("body")[0];
                var config = { childList: true, subtree: true };

                observer.observe(b, config);
            }
        }, false);

Yay! Good to hear that.
I’m glad you solved


[HELP] Sentinel2-L2A processing baseline 5 products

Can the API query for Sentinel2-L2A processing baseline 5 products from collection 1?
Are these available on S3 of AWS?
When I query using the example from the documentation, the products from processing baseline 02.14

For people interested, replied here in planet forum: thread


installer - ui sometimes fails on fast systems with all-in-one install

current workaround is to add 10s sleep time before starting UI
can be reproduced on fwodemo.cactus.de when rebooting lxd

[ ] debug root cause (docker, ie. API not ready?)
[ ] add dependency in systemd service file

not reproducible


Conversion from TCHAR to ImWchar on Linux

Linux builds emit the static assert in FImGuiInputState::AddCharacter:
static_assert(sizeof(TCHAR) <= sizeof(InputCharacters[0]), "Size of elements in Input Characters buffer is smaller than size of 'TCHAR'. Possible truncation.");
It appears that TCHAR is 32-bit on clang by default. It seems reasonable to allow the truncation to happen as I imagine it's rare that the upper two bytes will be used. Would it be sensible to downgrade this to a runtime assert that fires if truncation will actually happen (ie the top two bytes of Char are non-zero)?

In my test, in debug builds compiler didn't optimize away that block (visible in disassembly). But it can be done trough conditionally enabled utility functions. Fixed in Commit https://github.com/segross/UnrealImGui/commit/b2f4f43d7e34898dad642f465271cd9da7b49d70.


Error while getting Youtube Data: This Video is unavailable

Getting "Error while getting Youtube Data: This Video is unavailable" error on every video I'm trying.

any update in this error ??


testing: rename output-files to snippets

The local data used in testing is devided over 3 subdirectories at the moment:

repo-files
user-files
output-files

I think 3 should be renamed because the title should reflect what the dir's content represents, not what they are (it is a given that they are files).

PR was merged, closing


Reformat UG

Mainly categorized and reordered features, other minor changes like correcting phrasing and replacing all usages of "address book" with "Pupilist"
Features were categorized by: adding details, editing details, removing details, viewing details, and running the program

Codecov Report

Merging #199 (3c006ad) into master (9920558) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #199   +/-   ##
=========================================
  Coverage     65.30%   65.30%
  Complexity      686      686
=========================================
  Files           108      108
  Lines          2574     2574
  Branches        301      301
=========================================
  Hits           1681     1681
  Misses          776      776
  Partials        117      117

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


HBASE-28575 Always printing error log when snapshot table

Details see: HBASE-28575

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 40s
Docker mode activated.


RFC: Technical Architecture

Issue
Following the POC done by @rosle, we need to decide on how we will use Livebook for the Growth project but also how it could be used for documentation for any ELixir project.
The following concerns must be addressed:

Runtime configuration
How to structure the project with Livebook
How to manage documentation content

Docker seems to already be the best option to have it running in a project so this RFC won't cover this.
Solution
Runtime configuration
I agree with @rosle that Mix standalone should be the default way:

Basically, it mounts the local Mix/Phoenix application into the container for Livebook.

This is great for the development environment 👍 When deployed to staging, we can also have Liveman evaluating code into the current staging environment.
However, I would also like to propose exploring the Attached Node to connect to remote nodes such as staging and production.

Learn more about connecting the remote node on Heroku:

https://hexdocs.pm/phoenix/heroku.html#connecting-to-your-dyno
http://elixir-recipes.github.io/debug/how-to-connect-and-debug-elixir-or-phoenix-app-at-heroku/

Now you need to vote:
Using Mix standalone

Research more on Attached Node

How to structure the project with Livebook
We still don't know where we are going to place all the API wrapper/helpers code 🙈
@rosle also raised the concern that we should keep the project small when using Mix standalone as it needs to be recompiled each time. While it's true that the first compilation might take some time, once the application is compiled (and thanks to Erlang/OTP 24 which added the JIT compiler 💪), I believe that it's a manageable concern.
I am also not sure how the apps would look like if we split the Liveman project from the main app 🤔

If I am wrong on the above diagram, do point it out.
I still think that creating a Mix package with the API wrapper/helpers code e.g. liveman and include it in the main project would be a good approach. It would also allow versioning of the wrapper/helpers code so we could push out updates and projects using Liveman could get the updated code without doing some copy/paste. Also, it would allow us to create the Liveman service to aggregate all API documentation (see below).
Now you need to vote:

How to manage documentation content
My initial idea was to split the API resources into separate notebooks. Maybe we don't need to do that 😅 Having one notebook with sections should be enough:

The sidebar UI of a notebook only shows h1 and h2 but it seems we can jam quite a lot of content in there.

On a standard Macbook Pro 13" with a viewport of 1280px x 800px, we could have up to 17 API resources:

Even beyond this number. the sidebar becomes scrollable.
The advantage of having only one notebook for the whole API would allow us to use the notebook hosted at https://liveman.nimblehq.co/ to house all API documentation for all projects at Nimble. To make that happen, we would just import the Notebook from the separate projects onto https://liveman.nimblehq.co/.

A Livebook can be imported by URL:

In the end, https://liveman.nimblehq.co/ would provide an access to all project API documentation, just like Postman 💪
💡 There might still be a need to create other notebooks in a project to document parts of the application which is not about the API. We might still consider using Livebook instead of the Github wiki if we find ourselves more productive with it.
So I invite you to vote:

Who Benefits?
The Liveman squad. Without a clear vision, we will not succeed in delivering a meaningful project.
What's Next?

[ ] Use Mix standalone and define the default project.
[ ] Decide on how to structure the project
[ ] Decide on how to manage documentation content

Updated POC PR a bit to follow the idea here - https://github.com/nimblehq/liveman/pull/9. The compilation is much faster. You can try it out on the same test notebook 👍
I think we need to agree on the name to avoid having the same module name - lib/liveman and liveman. Though it is working fine but we might be confused by this naming in the future. 💡

I agree that the naming is key here 😅 When I created this repository, it was meant as the place to put all code for the Growth project. However, things are getting clearer now.
So moving forward, I recommend to:

Keep this repository for the mix application housing the hex package and the overall plan for the Growth project.
Create a new repository for the test API e.g. nimble-phoenix-api.

We decided to keep only one repository for the time being until the Hex package for the API wrapper is created.


RArm support (Enderium JetPlate)

I had already asked over on the RArm tracker for implementation (https://github.com/TehNut/RedstoneArmory/issues/10) but TehNut said he'd like to but he's unsure of implementation.
So, maybe either you can add it in to SJ or you can work with TehNut to get it implemented? It'd be nice to achieve a full Enderium set ;)

I've been looking forward to this as well, hopefully something can be done :)

What would be special about an Enderium version of the JetPlate, though, other than the skin/crafting? I'm not particularly fond of just adding a reskinned version of the same thing.

Considering it's made from Resonant Ender infused metals I was thinking it could be used to teleport to areas you have marked by visiting them (quite possibly with an extra item you add i.e. a "Pin-Pointer" if you like).
The amount of pin-pointable locations would be configurable (5 points by default?) so you can't just go warping all over the map like crazy and possibly have a cooldown or something might go awry in the jetpack (damage/death/explosion/fire/random teleport location). You could also still have a % failure with much the same negative effects.
The teleporting would be at a large cost of energy relative to distance much like IC2's teleporters. It could also, like IC2's teleporters, possibly cost more the more items you're holding.

Your thinking of a different mod. This doesn't fit in with this mod at all. i don't really like the idea of a teleporter.

We do need a Jetpack for RArm, but i don't like the teleport idea or a config to remove it. Maybe it can be fire proof unlike all the other stuff that makes it so you can swim in lava with no damage, but as soon as you leave the lava you start taking fire damage.

Whilst I can understand you not liking the idea, I don't see how fire proofing relates to Resonant Ender (which is what the jetplate would basically be made of).
Resonant Ender as a liquid does random teleports. So a shaped and moulded - "tamed" if you like - version of the item should relate to being able to control its base properties.
Also, the jetplates from what I recall (not played in a while), are enchantable, so you could just add the Fire Protection enchant anyway to help lava survivability.

 Resonant Ender is a Tier level, not everything Ender has to teleport you. Ender Chest is storage, Ender swords are used like a magnet, The Tier Ender just means Very Awsome nice upgrades. Plus for as expensive as the crafting is why aren't these armors fire proof anyways?
Same for the boots, why do they still cause the same amount of fall damage? I'm not mad, i just think it makes sense to add these things to armor.

No, not everything "Ender" needs to teleport, but the Jetplate is a transportation device. It just makes sense to me. Then again there could always be "extra" upgrades to things which might work well with the new GUI system.
The idea of the "upgrades" would be comparable to augments in Thermal Expansion machines. Better the tier of armour more augment slots?

Well i wouldn't mind a config to disable this. I'm just not a big fan of players being able to teleport past walls like having a blink drive. I have E-mobile mod, TF2 Teleport pads. jump pads, ender io, aroma mining world, these provide enough teleport for me, plus the jetpacks top tier move so fast. ender io has several ways to teleport to specific locations. Remote Io is really nice too. so many items that are already out there for teleporting. A jetpack has a Armor function and a Movement function "fly". you said it yourself a Transportations device not a Teleportation device but i get what your saying. Possibly if you want to make it like the E-mobile phone mod that takes you to your home upon request or set multiple homes i guess. these things are very expensive for what they do. RArm seems like an expensive tier but not very useful past Redstone Arsenal. The increase in armor and uses is very minimal for the cost.

I've left a comment on #100 about how I might want to handle this.

Sounds good to me, :)
The only reason I ever stated anything about teleportation is because originally you didn't just want to just add a reskin/different visual version.


Deleting/backspacing text

Is there any implementation to reverse the animation as though the text is being deleted one character at a time?

Interesting suggestion, I'll add this to my to do list.

Awesome, by the way forgot to say great job on the project - very impressive.


Stack CREATE_FAILED

Describe the bug
Stack creation fails. There are 4 stacks in total that fails with errors.
Screenshots
To be uploaded
**Browser

Firefox
Version 81.0

It looks like you've reached the limit for Elastic IP address in the region you're trying to install Perspective. You'll either need to request a service quota increase from AWS support or delete any unused Elastic IP addresses you have.

@dlajwalia did the suggestion above fix your issue? If so, i will close the issue

No. I ensured that there were EIPs available. However, the stack still fails.
<EMAIL_ADDRESS>Regards,
Dhaval Ajwalia
LIXIL Water Technology Americas
Cloud Services Manager

LIXIL Link to Good Living
American Standard Brands
One Centennial Avenue
Piscataway, NJ 08854
T :<PHONE_NUMBER>
Dhaval.Ajwalia<EMAIL_ADDRESS>www.americanstandard.comhttp://www.americanstandard.com/ | www.dxv.comhttp://www.dxv.com/ | www.grohe.com/ushttp://www.grohe.com/us
From: Matt Ball<EMAIL_ADDRESS>Sent: Wednesday, September 30, 2020 12:44
To: awslabs/aws-perspective<EMAIL_ADDRESS>Cc: Ajwalia, Dhaval<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [awslabs/aws-perspective] Stack CREATE_FAILED (#37)
@dlajwaliahttps://github.com/dlajwalia did the suggestion above fix your issue? If so, i will close the issue
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/awslabs/aws-perspective/issues/37#issuecomment-701509348, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQJAVQVATXE7XIIRWD64V5TSINN4HANCNFSM4R44P76Q.

For some reason the image you've posted there hasn't come through. I've just noticed in your original post that there's also a Config error there, which seems to indicate that there's already a Config delivery channel in the account (you can only have one per region).

Hi @dlajwalia
We've not heard back from you in a while. I intend to close this issue.
If we haven't solved your problem, feel free to reopen the issue


fix(config): warn if cve is used with remote storage driver -> disable cve

What type of PR is this?
config hardening
What does this PR do / Why do we need it:
Checks if remote storage driver is used while CVE is enabled at config verification time, warns that they are incompatible and disables cve. Also adjusts tests to reflect this.
If an issue # is not available please add repro steps and logs showing the issue:
If running zot with cve enabled and an s3 storage driver, the cve extension will treat the s3 root directory as a local directory leading to unexpected behavior
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

But what happens if I actually make a CVE query request?

But what happens if I actually make a CVE query request?

I tried with CVEListForImage in the GQL Playground after I added some images with skopeo and it seems to be working


BUG: problem with crop / decimation

I'm encountering some weird behaviors, but I'm unclear what they're due to:
import numpy as np
from mne.epochs import concatenate_epochs, EpochsArray
from mne.io.meas_info import create_info
from mne.decoding import GeneralizationAcrossTime

def make_epochs():
    n_trials = 100
    data = np.random.randn(n_trials, 64, 1946)
    times = np.linspace(-1.8, 2., data.shape[2])
    sfreq = len(times) / np.ptp([times[0], times[-1]])
    chan_names = ['eeg_%s' % chan for chan in range(64)]
    chan_types = ['eeg' for ii in range(64)]
    events = np.hstack((np.zeros(n_trials / 2), np.ones(n_trials / 2)))
    events = np.c_[np.cumsum(np.ones_like(events)) * sfreq, events, events]
    info = create_info(chan_names, sfreq, chan_types)
    epochs = EpochsArray(data, info, events=events, tmin=-1.8,
                         event_id=dict(a=0, b=1), verbose=False)
    return epochs

# BUG 1
epochs = make_epochs()
len(epochs)  # ok
epochs_ = concatenate_epochs((epochs['a'], epochs['b']))
len(epochs_)  # why not ok??

gives
   1196         if not self._bad_dropped:
-> 1197             raise RuntimeError('Since bad epochs have not been dropped, the '
   1198                                'length of the Epochs is not known. Load the '
   1199                                'Epochs with preload=True, or call '

RuntimeError: Since bad epochs have not been dropped, the length of the Epochs is not known. Load the Epochs with preload=True, or call Epochs.drop_bad_epochs(). To find the number of events in the Epochs, use len(Epochs.events).

# BUG 2
gat = GeneralizationAcrossTime()
epochs = make_epochs()
epochs.crop(-.200, .700)
gat.fit(epochs)  # ok

epochs = make_epochs()
epochs.decimate(10)
gat.fit(epochs)  # ok

epochs = make_epochs()
epochs.decimate(10)
epochs.crop(-.200, .700)
gat.fit(epochs)  # ok

epochs = make_epochs()
epochs.crop(-.200, .700)
epochs.decimate(10)
gat.fit(epochs)  # why not ok??

gives
/home/jrking/mne-python/mne/decoding/time_gen.pyc in <genexpr>((train_slices_chunk,))
    162                                   X[..., f(train_slices_chunk)],
    163                                   y, train_slices_chunk, cv)
--> 164                        for train_slices_chunk in splits)
    165         # Unpack estimators into time slices X folds list of lists.
    166         self.estimators_ = sum(out, list())

What erros do you get? Is this related to #2356?
I agree these should be doable, and made into tests to make sure everything is working properly.

What erros do you get?

I update the post.

Is this related to #2356?

I'm not sure, but I think these are separate issues.

First bug -- it looks like somehow the concatenation function is not recognizing/passing on that bad epochs have been dropped, and probably needs to set a parameter appropriately.
If the splits are in time, that last one could actually be due to time rounding/indexing errors, or it could be something different.

fixed first bug in :
https://github.com/mne-tools/mne-python/commit/1cc037e71d723350f3beb54f9a545d56cc4e6683
for the second one it's something in GAT I suspect.

thanks @agramfort! For the second bug, it's actually a crop / decimate issue too:
epochs = make_epochs()
epochs.crop(-.200, .700)
times = [epochs.times[-1]]
epochs.decimate(10)
times.append(epochs.times[-1])
print times

gives
[0.6990750256937307, 1.9878725590955804]

I guess you should probably update _raw_times, or compute the decimated time differently
epochs.times = epochs._raw_times[epochs._decim_slice].
I'm not sure what _raw_times is, so I'll let you fix the bug ;)

I can look into it tomorrow


Move skip for useradd test to metadata

Otherwise we run useradd provider prior to the before block with the
example-level skip being called.
@chef/client-core

still passes for me


Add a tp_cmp slot for richcompare

Should I merge now and try individual op slots later?

Sure. I think individual op slots are non-trivial optimization. We'd better to have benchmark before doing that.


Unreal: Build shot structure from the database

Changelog Description
Added a button to build the shot structure as sequences from the database.

Because we're splitting OpenPype into ayon-core and individual host addons, this PR would have to be re-created to target one of those.
We're closing it down, but we'll he happy for a new PR to ynput/ayon-core or the host addon repository once it's up.


[BUG] Service Bus Session Receiver is not signaling completion when used in rolling-sessions mode.

Note: This the write-up based on the RCA that @conniey did as part of this pull request.
The ServiceBusSessionReceiver terminates the message pumping if no messages arrive for more than the RetryOptions::TryTimeout period (idle timeout). Such a termination is achieved by using takeUntil+Processor -
Flux<ServiceBusMessageContext> r0 = receiveLink
     .takeUntil(cancelReceiveProcessor)
     ...

When such idle timeout elapses, the "cancelReceiveProcessor" is signaled to terminate r0.
This idle timeout based termination is an optional internal feature.
The idle timeout is internally opt-in when using the Low-Level-Receiver attached to a Session. The idle timeout is internally opt-out when using Processor-Receiver attached to multiple Sessions (a.k.a rolling session).
The library decorates the above r0 with the concat operator, and exposes it to the application as below -
Flux<ServiceBusMessageContext> r1 = Flux.concat(r0, cancelReceiveProcessor);

Here, if the idle timeout is opted-out (which is the case with the rolling session), the "cancelReceiveProcessor" is never signaled, and the r1 may never terminate even after the termination of r0.

Fixed in #34590


Compile error when using proc as handler with Kemal

I'm trying to use a proc as the handler for two separate routes in Kemal. The compiler seems to choke on it.
Code
my_handler = ->(env : HTTP::Server::Context) {
  "example"
}

get "/*", &my_handler
get "/", &my_handler

Compiler Output
Crystal 0.20.5 (2017-02-01)

Module validation failed: !dbg attachment points at wrong subprogram for function
!4 = distinct !DISubprogram(name: "__crystal_main", linkageName: "__crystal_main", scope: !5, file: !5, type: !6, isLocal: true, isDefinition: true, isOptimized: false, unit: !0, variables: !2)
void (i32, i8**)* @__crystal_main
  %108 = load %"->", %"->"* % my_handler, !dbg !46
!46 = !DILocation(line: 5, column: 5, scope: !47)
!47 = distinct !DISubprogram(name: "get", linkageName: "get", scope: !48, file: !48, line: 2, type: !6, isLocal: true, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, variables: !2)
!47 = distinct !DISubprogram(name: "get", linkageName: "get", scope: !48, file: !48, line: 2, type: !6, isLocal: true, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, variables: !2)

0x10f32f5e3: *raise<String>:NoReturn at ??
0x11015e9aa: *Crystal::CodeGenVisitor#finish:Nil at ??
0x1100a918d: *Crystal::Compiler#codegen<Crystal::Program, Crystal::ASTNode+, Array(Crystal::Compiler::Source), String>:Nil at ??
0x10f384904: *Crystal::Command#run:(Bool | Crystal::Compiler::Result | IO::FileDescriptor | Nil) at ??
0x10f355cd7: main at ??

Error: you've found a bug in the Crystal compiler. Please open an issue, including source code that will allow us to reproduce the bug: https://github.com/crystal-lang/crystal/issues

@andyfleming i couldn't reproduce on Crystal 0.20.5 with Kemal 0.17.5.
Could you please give more info on your versions

I was also using Crystal 0.20.5 and Kemal 0.17.5

Here's the full source:
require "kemal"

redirect_handler = ->(env : HTTP::Server::Context) {

	incomingHost = env.request.headers["Host"].split(':')[0]

	if incomingHost !~ /^www\./
		env.response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
		env.redirect("http://www." + env.request.headers["Host"] + env.request.resource, 301)
	else
		env.response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
		env.response.status_code = 400
		env.response.content_type = "text/plain"
		"Bad request: Domain already has www prefix"
	end
}

get "/_health_check_" do
	"healthy"
end

get "/*", &redirect_handler

get "/", &redirect_handler

# Default the port to 80 if it isn't in the environment
ENV["PORT"] ||= "80"

Kemal.run(ENV["PORT"].to_i)

The issue arises because of LLVM 3.9 module validation that changed.

So do I have a dependency out of date @ysbaddaden? Or is this a bug?

It's a compiler bug, introduced by recent changes:

LLVM 3.9+ validates more things, especially about debug info;
Crystal now always generates debug info.

But I'm not sure how to even start fixing it...

@ysbaddaden i use LLVM 3.9.1 and couldn't reproduce this.

Reduced:
def foo(&block)
  block
end

f = ->{}
foo(&f)


[NGINIX Ingress Controller] Support for 301 redirects.

Would be nice to be able to setup 301 redirects. As services come and go, certain things in the cluster get deprecated and require a redirect to a new location.
Two current solutions that I'm aware of now:

Use custom template, but this is overkill and makes upgrading controller harder/error prone;
Put another proxy in front of the ingress controller, also seems overkill, but maybe not a bad idea in longterm
Spin up container which only does redirection for configurable domains. (This is what I'll currently use until there is a better solution)

The general issue is to be able to add custom configuration sections in global and per ingress controller scope. Otherwise I feel the project will end up slowly implementing each NGINX config option as flag.
I am willing to contributing the redirect code.

@MaikuMori can you post an Ingress rules as example?

Could be done with some awkward Ingress rule like this:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
  namespace: test
  annotations:
    ingress.kubernetes.io/301-to: "https://domain.com/path"
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: foo.bar.com

Other option is in the configmap using some sort of format:
301-redirects: "foo.bar.com:https://domain.com/path boo.bar.com:https://other.com/"

In this example split on   and then on first :. I'm sure there is a better separator choice.
Personally I would like free-form config map entry like:
global-block: |
  some_other_custom_option set-to-value;
  server {
	listen 80;
	server_name foo.bar.com;
	return 301 $scheme://domain2.com$request_uri;
  }

Also such custom block set via annotations would be nice for adding custom options to server directives created by Ingress resource.
@aledbf what do you think?

@MaikuMori I think could be useful
That said there's a some issues some of the proposals:

Personally I would like free-form config map entry like:
global-block: |

that is not possible because it makes impossible the creation of a generic template (please check the current version to see the logic behind

301-redirects: "foo.bar.com:https://domain.com/path boo.bar.com:https://other.com/"

supporting "lists" inside the annotation is not an issue but you are mixing domains and paths that breaks all the logic behind the controller to generate the data for the template.
If the annotation to add redirects is added you can define multiples Ingress rules for the same FQDN and different paths and the redirect (in each rule) will be applied in the Ingress path. The downside of this is that you need multiple ingress

ingress.kubernetes.io/301-to: "https://domain.com/path"

WDYT of this (just to avoid numbers and provide clarity?):
ingress.kubernetes.io/permanent-redirect: "https://domain.com/path"
ingress.kubernetes.io/temporal-redirect: "https://domain.com/path"

that is not possible because it makes impossible the creation of a generic template (please > check the current version to see the logic behind

Technically NGINX supports multiple http blocks, but it's not exactly best practice and can break stuff. What about http-block which is inserted here nginx.tmpl#L365? Or did I completely misunderstood why it's not possible? If it's inserted at the end, it can overwrite things. Personally I would prefer this over specifying custom template which is more error prone when it comes to controller updates. Obviously this would be advanced feature which allows people to shoot themselves in the leg.

you are mixing domains and paths that breaks all the logic behind the controller

I specifically added paths only to the destination. In my case I needed to redirect all traffic with specific Host header to another location.
But you're right, it's somewhat complex to define generic options because there are multiple use cases that people could have:

All traffic matching specific host to another host and preserve path.
All traffic matching specific host to another host with custom path (/ or /foo/bar)
All traffic matching specific host and path to another host and preserve path.
All traffic matching specific host and path to another host with custom path (/ or /foo/bar)
Even more custom rules which are currently supported using NGINX DSL.

WDYT of this (just to avoid numbers and provide clarity?):

Much better, the examples I gave were just to showcase different ideas. I still feel multiple Ingress rules are clumsy and overall too verbose.

+1

If anyone else may end up here - I found a pretty good way to solve one of my issues using ingress.kubernetes.io/configuration-snippet:
I've had issues with a setup using ingress.kubernetes.io/rewrite-target: / and /path != /path/
Basically my ingress worked for /path/ (rewrite target -> OK)
but not for /path -> no rewrite happened.. my underlying service received route /path which was not found...
Solution was to add a 2nd separate ingress resource with a custom rewrite:
    # adds 301 redirect with trailing slash
    ingress.kubernetes.io/configuration-snippet: |
      rewrite ^([^.]*[^/])$ $1/ permanent;

If anyone else may end up here - I found a pretty good way to solve one of my issues using ingress.kubernetes.io/configuration-snippet:
I've had issues with a setup using ingress.kubernetes.io/rewrite-target: / and /path != /path/
Basically my ingress worked for /path/ (rewrite target -> OK)
but not for /path -> no rewrite happened.. my underlying service received route /path which was not found...
Solution was to add a 2nd separate ingress resource with a custom rewrite:
    # adds 301 redirect with trailing slash
    ingress.kubernetes.io/configuration-snippet: |
      rewrite ^([^.]*[^/])$ $1/ permanent;

+1

+1

+1

+1

This helped to solve the issue at least with GET requests:  /foo works and /foo/ works too but this cannot be said for POST requests.
Even with this rewrite rule, the POST request still requires the trailing slash.

The updated link for what @praseodym shared is: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#permanent-redirect
Thanks 🎉


Scene restoration not working properly

Hello. I'm trying to restore the state of my lights which have a scene activated outside of HA via alexa. However it doesn't seem to be working properly.
My automation is as follows
- alias: Kitchen - Dishwasher Ready Alert
  id: 28E0F36B-CDF0-4BB5-BF4D-BB16B354E75C
  trigger:
  - platform: state
    entity_id: binary_sensor.kitchen_occupied
    to: 'on'
  condition:
  - condition: state
    entity_id: input_boolean.is_dishwasher_finished
    state: 'on'
  action:
  - service: scene.create
    data:
      scene_id: kitchen_lights
      snapshot_entities: light.kitchen_bottom_lights
  - delay: 00:00:02
  - service: media_player.play_media
    data:
      media_content_type: custom
      media_content_id: turn on dishwasher alert
    target:
      entity_id: media_player.kitchen_echo
  - delay: 00:00:10
  - service: scene.turn_on
    target:
      entity_id: scene.kitchen_lights

If the lights started off, they're not always restoring to their off state. If the lights are on, then they're not always restoring to their original state.

I have no plans to fix that here in this integration, but I do want to note that saving and restoring scenes does work in my new Govee2MQTT AddOn, so you may wish to consider moving to that.


Update change-ip.sh

Hi Ouerghi Yassine,
Thank you for your contribution.
Thanks and Best Regards,
WSO2 IoT Team.


Optional Keying of obejcts

We should make it so that a key is optional when adding itms to the loader. If the key is not provided then we can use the url as the key.
This will be super handy as it give us the best of both worlds :+1:

nice :+1:


[Tutorial/State] Fix docs/redux-tutorial and Add file and directory 'the-end'

Fix #189

I modified both English and Korean versions of 'docs/state-tutorial/redux-tutorial' more easily than before.

I added in 'docs/state-tutorial/redux-tutorial'

/08-the-end

the-end.md
the-end-kr.md

Changes

Changed all file of 'docs/state-tutorial/redux-tutorial'

Added in 'docs/state-tutorial/redux-tutorial'

/08-the-end

the-end.md
the-end-kr.md

How Verified
(Automated Tests)

N/A

(Manual Tests)

N/A

Notes

N/A

References

N/A

@JeffGuKang @dididy

It was a good PR to improve the quality of existing documents.


fix: create pipeline from dict & support pass easy_rec_config object …

The method create_pipeline_proto_from_configs in config_util is unusable because the structure of the dictionary is inconsistent with the object structure. To improve this, we convert the dictionary to JSON first, and then use json_format in Proto to convert it to an object.

The path check in train_and_evaluate in main can be removed because the logic for checking whether the path exists is already provided by the config_util.get_configs_from_pipeline_file method. However, this method can also accept the pipeline_pb2.EasyRecConfig() object directly. Therefore, we can partially decouple and remove this redundant logic.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


net/http: remove redundant numeric StatusCode from Status message

In the case of parsing HTTP status with a message, eg: HTTP/1.1 200 OK,  StatusCode is correctly set to 200 but Status is parsed to 200 OK when it should only be OK. This leads to inconsistency with http.StatusText which only returns OK instead of 200 OK.
In the case Status includes a space, it includes a numeric status code we can trim out the numeral and move it to StatusCode
Fixes #38996

@googlebot I signed it!


chore: Update nuget examples

Please provide the issue number

Issue number: #560
Summary
Update examples dependencies
Changes

Please provide a summary of what's being changed

update nuget packages
User experience

Please share what the user experience looks like before and after this change

Checklist
Please leave checklist items unchecked if they do not apply to your change.

[x] Meets tenets criteria
[x] I have performed a self-review of this change
[x] Changes have been tested
[ ] Changes are documented
[x] PR title follows conventional commit semantics

Is this a breaking change?
RFC issue number:
Checklist:

[ ] Migration process documented
[ ] Implement warnings (if it can live side by side)

Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 72.88%. Comparing base (9148d02) to head (3aaf67d).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #565      +/-   ##
===========================================
+ Coverage    72.37%   72.88%   +0.51%
===========================================
  Files          109      109
  Lines         4489     4489
  Branches       455      455
===========================================
+ Hits          3249     3272      +23
+ Misses        1106     1086      -20
+ Partials       134      131       -3

Flag
Coverage Δ

unittests
72.88% <ø> (+0.51%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


While create controller or middleware im getting below error

$ php artisan module:make-controller DashboardController
  [Illuminate\Contracts\Filesystem\FileNotFoundException]
  File does not exist at path C:\wamp\www\ppp\storage\app/modules/modules.used
~~~~~~~~~~~

Sorry i got this... Before create anything i need to use it.
eg:  php artisan module:use superadmin
~~~~~~~~~

No you don't. You can, but you can also give the module name to the generation commands.
$ php artisan module:make-controller DashboardController YourModule`

Thanks @nWidart for quick reply... Well that  make sense adding module name..


AML bundle fails due to missing tags

Fixes #2197
What is being addressed
AML bundle fails due to missing tre_workspace_service_tags variable.
How is this addressed
Fixing tre_workspace_id variable workspace_id, tre_workspace_service_id variable
tre_resource_id

/test-extended d3ad378

Hi @pedro-pelegrin-nttdata thanks for looking at this. Can you upgrade the porter bundle version in porter.yaml please. I have pulled your code (update the version) and successfully deployed AML. Thanks.

/test-extended e007b35

/test-destroy-env

/test

/test-extended e007b35

/test c67224c


Method naming overlap prevent install/enable both swoole/openswoole simultaneously

What did you do? If possible, provide a simple script for reproducing the error.

install and enable both swoole and openswoole

What did you expect to see?

no warning, expect no method naming overlap

What did you see instead?

when run "php -v", warnings are shown:
PHP Warning:  Function registration failed - duplicate name - swoole_coroutine_create in Unknown on line 0
PHP Warning:  Function registration failed - duplicate name - swoole_coroutine_defer in Unknown on line 0
PHP Warning:  Function registration failed - duplicate name - swoole_coroutine_socketpair in Unknown on line 0
PHP Warning:  Function registration failed - duplicate name - swoole_test_kernel_coroutine in Unknown on line 0
PHP Warning:  Function registration failed - duplicate name - swoole_internal_call_user_shutdown_begin in Unknown on line 0

What version of OpenSwoole are you using (show your php --ri openswoole)?

latest openswoole

What is your machine environment used (show your uname -a & php -v & gcc -v) ?

Linux dev-web 5.4.17-2136.302.6.1.el7uek.x86_64 #2 SMP Tue Dec 14 13:21:01 PST 2021 x86_64 x86_64 x86_64 GNU/Linux

You can’t use two extensions the same time

@doubaokun
a)
Will openswoole rename all the "swoole_" methods?
Seeing a mixed of "swoole_" and "openswoole_" can be confusing and unsettling.
b)

You can’t use two extensions the same time

I agree, it doesn't make sense to use both in the same application. However it does make sense to allow both swoole and openswoole to be installed as extension on the same host. For example, I may have 1 project using swoole, and another project using openswoole on my localhost.


Excessive logging results in log containing with 1000s of lines unwanted entries

The following log entry exists in Python extension when ever Jupyter extension attempts to access some API
This is logged over 1500 times
I guess everytime the Jupyter exension attempts to access the known property its logged.
I'd consider removing this from the logs to reduce the size of the logs (as i was unable to upload the logs in a github issue)
2024-02-29 00:14:55.158 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.167 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.178 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.187 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.188 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.189 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.190 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.192 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.193 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.194 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.196 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.197 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.198 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.199 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.201 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.203 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.222 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.227 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.235 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.237 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.238 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.240 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.271 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.274 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.276 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.279 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.283 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined
2024-02-29 00:14:55.286 [debug] Extension ms-toolsai.jupyter accessed known with args: undefined

Based on discussion with team, this indicates to us a problem that known is being called so many times: https://github.com/microsoft/vscode-python/issues/22994#issuecomment-1970965531. So unless it has a performance impact (yet to investigate), we might just keep it.

So unless it has a performance impact (yet to investigate), we might just keep it.

I think you missed the whole point of this issue i was unable to upload the logs in a github issue
I.e. as a user I will no  longer be able to past the logs directly into a github issue, I have to now always save the logs to a file and then upload them.
E.g. when I save the logs,
one is 1.1MB and other is 250KB.

I've actually removed the logging, seems like the pre-release wasn't published https://github.com/microsoft/vscode-python/issues/23021#issuecomment-1975767591.

this indicates to us a problem that known is being called so many times

This is no longer a problem, as known just returns from cache now, so this issue can be considered as done.


Swift3

Supersedes #501, contains #475 (which should probably be merged first).

@stephencelis it might make sense to skip #475, unless you want to keep a separate branch for 2.3 compatibility?

It's look great.
How can I integrate it on a Pod file ?

@iLandes
try
pod 'SQLite.swift', :git => 'https://github.com/stephencelis/SQLite.swift.git',
       :branch => 'swift3-mariotaku'

can you I get a carthage line to integrate this branch into my project? thanks in advance.

Many thanks to @mariotaku for picking up my branch and getting it across the finish line! And many more thanks to @jberkel for doing an incredible job coordinating this migration. It's a big one!

it might make sense to skip #475, unless you want to keep a separate branch for 2.3 compatibility?
Alternatively we could merge #475 first and then have a swift3 branch in parallel, but given the amount of changes this will become a maintenance nightmare.

It'd be nice to tag 2.3 compatibility, though I don't think maintaining both at once is feasible.

PR  is ready for another round of review.

I was just upgrading my app and something isn't working for watchOS. Wanted to leave a note about it. Will be digging in deeper to understand why.

Since I did not hear any more bug reports/complaints I just went ahead and merged the PR. The modulemap problems for non-CocoaPods users should hopefully be gone now.


V1.3 storage generate pdfs

Codecov Report

Merging #126 (eca8f87) into master (4843686) will decrease coverage by 4.72%.
The diff coverage is 1.53%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@             Coverage Diff              @@
##             master     #126      +/-   ##
============================================
- Coverage     66.99%   62.28%   -4.72%
  Complexity      469      469
============================================
  Files            85       91       +6
  Lines          1709     1848     +139
  Branches        181      196      +15
============================================
+ Hits           1145     1151       +6
- Misses          497      631     +134
+ Partials         67       66       -1

Impacted Files
Coverage Δ

src/main/java/seedu/address/files/FileStorage.java
55.31% <ø> (ø)

...rc/main/java/seedu/address/files/FilesManager.java
25.00% <0.00%> (-16.94%)
:arrow_down:

src/main/java/seedu/address/files/ImageReader.java
0.00% <0.00%> (ø)

...va/seedu/address/logic/commands/CreateCommand.java
0.00% <0.00%> (ø)

...eedu/address/logic/commands/UploadFileCommand.java
100.00% <ø> (ø)

...java/seedu/address/logic/commands/ViewCommand.java
0.00% <0.00%> (ø)

.../seedu/address/logic/parser/AddressBookParser.java
69.56% <0.00%> (-6.63%)
:arrow_down:

...eedu/address/logic/parser/CreateCommandParser.java
0.00% <0.00%> (ø)

...in/java/seedu/address/logic/parser/ParserUtil.java
91.66% <0.00%> (-4.83%)
:arrow_down:

src/main/java/seedu/address/model/AddressBook.java
92.00% <ø> (ø)

... and 1 more

... and 7 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


WeMo Motion has stops working after upgrade to 0.47.0/0.47.1 after period of time

**Home Assistant release (hass --version): 0.47.1
**Python release (python3 --version): Python 3.4.2
**Component/platform:WeMo
**Description of problem: After a few hours of HA running on my raspberry pi, WeMo motion sensor stops triggering my lights. Lights are functioning, so issue looks like it's with WeMo motion.
It seems to be behaving fine for about half a day then stops and have to restart HA.

Experiencing same isssue. And with Wemo maker too

Is it z wave? I have same issue with all my z wave devices

Make sure your firmware on the Wemos are up to date. This resolved it for me, however this introduces a new issue which I fix in #8762


Fix for form-builder bug not yet published to npm

Link to reproduction
No response
Describe the Bug
About half a year ago, there was a fix for the form builder that correctly extended all hook overrides that are applied to the formSubmissions collection. See this commit
Unfortunately, this fix has never been published to npm.
Can someone release and publish a version 1.2.3? (in package.json)
To Reproduce
Install latest version of the form builder plugin
Inspect files in the node_modules folder
note that in<EMAIL_ADDRESS>the file mismatches with how the source code is.
The code in the installed index.js:
        hooks: {
            beforeChange: [
                (data)=>(0, _createCharge.default)(data, formConfig),
                (data)=>(0, _sendEmail.default)(data, formConfig),
                ...formConfig?.formSubmissionOverrides?.hooks?.beforeChange || []
            ],
            ...formConfig?.formSubmissionOverrides?.hooks || {}
        }

The source code:
    hooks: {
      ...(formConfig?.formSubmissionOverrides?.hooks || {}),
      beforeChange: [
        (data) => createCharge(data, formConfig),
        (data) => sendEmail(data, formConfig),
        ...(formConfig?.formSubmissionOverrides?.hooks?.beforeChange || []),
      ],
    },

Payload Version
2.30.3
Adapters and Plugins
form-builder

Thanks for bringing this to our attention! We'll make sure it is published.

@denolfe @DanRibbens What is the expected date that a new release will be published?

@denolfe @DanRibbens This issue is blocking a major release for me. Can you please give an estimate of how long this will take to be resolved?
Alternatively, could you propose a solution such that I can work with the fix in my project without publishing a release?

Hey @didierrothuizen , thank you for your patience on this. v1.2.3 of plugin-form-builder was just published. You can also use the payload-2 tag.


FlutterActivity is incompatible with apps that need FragmentActivity

Android "best practice" is often to use the v4 support library's FragmentActivity because it has a strict superset of the functionality in the Android framework's Activity class.  In fact, the only reason not to use FragmentActivity is if you need to avoid the binary size increase that goes along with bundling the v4 support library JAR in your app.  However, so many Android apps need that support library anyway that virtually all apps include it (and correspondingly use FragmentActivity).
Because that's true for non-Flutter Android apps, many native libraries built on top of the Android APIs deal directly with FragmentActivity, assuming that apps won't have a problem with the reliance on the v4 support library.
This poses a problem for Flutter plugin authors.  Since they're calling APIs in various Android libraries, they're often going to be faced with APIs that require a FragmentActivity.  Yet, FlutterActivity extends Activity directly rather than FlutterActivity specifically to avoid the dependency on the v4 support library.
The solution thus far (used internally in Google) has been to copy/paste FlutterActivity into a version that extends from FlutterActivity but is identical in all other ways. This is not only a burden on app developers, but it means:

They won't benefit from new functionality or bug fixes in the engine's FlutterActivity
They'll suffer more from internal API changes like the move to the PluginRegistry APIs

The fact that we don't bundle the v4 support library in the Flutter engine is a good thing.  Rather than going down that road, we can probably make better use of composition in FlutterActivity with public classes that can easily be composed into an app-specific FragmentActivity subclass.

FYI @mravn-google @collinjackson

While a lower priority, solving this would also help apps that want to embed a FlutterView in a non-fullscreen activity, since otherwise they'd have to reimplement the PluginRegistry API manually.

This materially affects GoogleSignIn plugin as well, because in order to gain the full benefit of the GMS sign in APIs (such as a user dialog when your GMS Core version is out of date), your activity needs to extend FragmentActivity.  At the time of this writing, the GoogleSignIn plugin doesn't require FragmentActivity, and so it misses out on a lot of the features of the GMS sign in APIs (it has to opt-out of the auto-managed UI).
Here's a full proposal including how it relates to GoogleSignIn:

Refactor FlutterActivity in the engine to be more composable, so that other activity classes can use its functionality without having to extend it.
Write a FlutterFragmentActivity that depends on the v4 support library and extends FragmentActivity, and publish that (Flutter support library?) to Maven.
Change the GoogleSignIn plugin to require the use of FragmentActivity (thus requiring apps that use it to depend on the v4 support library), and point users of it to FlutterFragmentActivity (though they won't be required to use it if they prefer to use another FragmentActivity subclass).

I know of some tracking libraries which have their own Activity class that needs to be extended. Would this change also help with that?

Yep.  See https://github.com/flutter/engine/pull/3748, which adds a FlutterActivityDelegate (which could be used by any activity)

Ok, we now have io.flutter.app.FlutterFragmentActivity available for apps willing to take the hit of the v4 support library (1.1M before Proguard).
I'm marking this as fixed; there's a separate task of updating the google_sign_in plugin to use it.


feat: rating and feedback system

closes #1200
👷🏻 Changes made

Added a 5-star rating system along with user feedback which can be used for each event's feedback of user and could be saved in database. Right now as discussed , have added the frontend part of the feature.
📸 Screenshots

I wanted it to be assigned under JWOC'24. The label to mr is showing of hackotober fest.Please could you change it.
@tamalCodes

Screenshots-

okay sir will fix it. @tamalCodes

No need to call me "sir" or anything similar - Tamal would be enough !

Is the UI fine now??
Also I am unable to locate individual club on beta branch where you have asked to add the button. Please help me
@tamalCodes

Hi @KhushiAgarwal22

The file would be this one right here
The UI needs to be improved. I have shared the image please look at that.
The BG can be full white
Remove the dropdown feature
Font for all would be Poppins
Make sure the BG is not scrollable while the modal is open.

Is UI fine now?

Found the file but not visible when open the website through npm run dev.
@tamalCodes

Yes the UI looks good, let's push these !

I have added the button in clubsProfile.jsx.
@tamalCodes

hi @tamalCodes , could you please help me fix the issue. I am not able to understand why deployment is failing.

Hi @KhushiAgarwal22 , i think you might need to pull some latest changes from the beta branch

Let's catch up 🙋🏻♂
Hi there, it has been a while since we last had a conversation so I wanted to know if you are still working on this. Please drop a reply shortly so that we know you are active, feel free to convey any problem you face in the comments, or mail me at<EMAIL_ADDRESS>

Notice 🚩
Hi there, unfortunately, I will have to close this Issue/PR, as this issue/PR has been inactive for quite a while and there's no work going on for the same.
There might be more Issues/PR that are waiting for this to be completed - so it is better to pace things up. I generally spend/wait for 3 weeks before marking any issue as stale and closing it.
If you think that this is a mistake, please drop an email at<EMAIL_ADDRESS>and we will get back to you.
Regards,
Team Milan.